永久个人自助建站今日刚刚发生的重大新闻
Java是一种高级计算机语言,是可以编写跨平台应用软件、完全面向对象的程序设计语言。
2、Java划分为三个技术平台:Java SE、Java EE、Java ME
Java SE是桌面应用,Java EE是web应用,平台企业版,Java ME是手机应用,平台微型版
3、Java语言的特点:简单易用、安全可靠、跨平台(通过Java虚拟机实现)、面向对象、支持多线程、自动进行垃圾回收(c语言没有)。
Java引入了虚拟机的概念,通过虚拟机(JVM)可以在不同的操作系统上运行Java程序,从而实现跨平台特性。
请添加图片描述
4、所有的可执行文件都在bin文件夹下
5、bin目录:该目录用于存放一些可执行程序,如javac.exe(Java编译器)、java.exe(Java运行工具)、jar.exe(打包工具)和 javadoc.exe(文档生成工具)
javac.exe是Java编译器工具,它可以将编写好的Java文件编译成Java字节码文件(可执行的Java程序)。就是将.java文件编译成.class文件。
java.exe是Java运行工具,它会启动一个Java虚拟机(JVM)进程,专门负责运行由Java编译器生成的字节码文件(.class文件)
6、db目录:db目录是一个小型数据库
7、include目录:在启动时引入一些C语言的头文件。
8、jre目录:此目录时Java运行时环境的根目录,它包含Java虚拟机、运行时的类包、Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
jre只负责编写,不负责编译(只有java没有javac)
9、lib目录:为Java类库或库文件,是开发工使用的归档包文件
10、src文件夹:放置JDK核心类的源代码。
1、PATH配置bin文件夹的目录
2、PATH环境变量用于存储Java的编译和运行工具所在的路径。
请添加图片描述
3、因为Hello World.class字节码文件不是二进制的,不能直接执行,所以需要进行解析。
4、解析器使用“java HelloWorld”命令启动Java虚拟机运行程序,Java虚拟机首先将编译好的字节码问价加载到内存,这个过程称为类加载。
5、Java通过虚拟机,一次编译,到处运行。
6、Java程序通过Java虚拟机可以实现跨平台特性,但是Java虚拟机并不是跨平台的。
7、一个Java文件编译后一定生产一个class文件(❌)
一个Java文件可以有很多类,一个类对应一个class文件,有几个类就编译生成几个class文件。
8、一个文件中只能有一个公共类(public 修饰的类)
9、一个Java文件中可以没有公共类,但是一旦有了公共类,那么公共类的名字一定要和文件名保持一致。
1、Java的三大体系是:Java EE、Java SE、Java ME
2、Java程序的运行环境简称:JRE
3、编译Java程序需要使用 javac 命令
4、javac.exe和java.exe两个可执行程序存放在JDK安装的目录下的 bin 目录下。
5、Path环境变量用来存储Java的编译和运行工具所在的路径,而classpath环境变量则用来保存Java虚拟机要运行的“,class”文件路径。
6、Java.util包含Java中大量工具类、集合类,例如:Arrays、List、Set等。
7、JDK工具包括:Java编译器、Java运行工具、Java文档生成工具、Java打包工具。
8、.class文件可以在Java虚拟机中运行。
9、java.exe命令的作用是Java解释器
1、标识符:经常需要在程序中定义一些符号来标记一些名称,如包名、类名、方法名、参数名、变量名等,这些符号被称之为标识符。
标识符可以由任意顺序的大小写字母、数字、下画线(_)和美元符号( $ )组成,但是标识符不能以数字开头,也不能是Java中的关键字,也不能和JDK中的类同名。否则会在编译的时候出错
2、Java中的命名约定:
1⃣️:包名所有的字母一律小写。
2⃣️:类名和接口名每个单词的首字母都要大写,例如:ArrayList。
3⃣️:常量名的所有字母都大写,单词之间用下画线连接,例:DAY_OF_MONTH。
4⃣️:变量名和方法名的第一个单词首字母小写,从第二个单词开始每个单词首字母大写(驼峰命名法),例:lineNumber
5⃣️:尽量使用有意义英文单词来定义标识符。
类型名 占用空间 取值范围
byte 8位(1个字节) -27~27-1
short 16位(2个字节) -215~215-1
int 32位(4个字节) -231~231-1
long 64位(8个字节) -264~264-1
float 32位(4个字节) 1.4E-45~3.4E+38,-1.4E-45~-3.4E+38
double 64位(8个字节) 4.9E-324~1.7E+308, -4.9E-324~-1.7E+308
char 每个字符变量占用2个字节
Unicode 每个Unicode码占用16个字节
3、为一个float类型的变量赋值的时候,所赋值的后面一定要加上F或者f
而在为一个double类型的变量赋值的时候,可以在后面加上D或者d,当然这个double类型的后面可以不加D或者d。
4、Java的字符类型采用的是Unicode编码方案,每个Unicode码占用16个字节。
5、对于char类型的赋值时需要使用一对单引号括起来,而且单引号中必须有且只能有一个字符。
6、Java中不能使用1、0表示真假,只能用true、false表示真假,而c语言用非0表示真,用0表示假,C语言中没有true、false。
请添加图片描述
范围小的能够自动转换为范围大的。
7、如果对表达式加强制类型转换,那么表达式一定加括号
例:(类型)(表达式)
8、理解几个转换:
public class testA {
public static void main(String[] args) {
System.out.println(2+3+'a'); //自动转换成int类型了
System.out.println(2+3+"a"); //自动转换成String类型的了
System.out.println("a"+2+3); //自动转换成String类型的了
}
}
请添加图片描述
9、常量分为数值常量、符号常量:100,‘a’ ,true
10、整型常量:
1⃣️:二进制:由数字0和1组成,使用二进制面值来表示整数的时候,二进制数前面要以0b或0B开头,目的是为了和十进制进行区分,例:0b01101100
System.out.println(0b01101100);
请添加图片描述
2⃣️:八进制:以0开头,并且其后由0~7(包括0和7)的整数组成的数字序列,如:0324
System.out.println(0324);
请添加图片描述
System.out.println(010);
请添加图片描述
3⃣️:十进制:由数字0~9(包括0和9)的整数组成的数字序列,如198.
4⃣️:十六进制:以0x或者0X开头,并且后面跟随着0~9、A~F组成的字符序列,如0x25AF
System.out.println(0x25AF);
请添加图片描述
System.out.println(0x10);
请添加图片描述
1、java常量需要声明定义常量类型、常量名,并且可以对该常量进行初始化赋值,也可以后续赋值,但是Java常量一旦赋值后,值就不允许更改。
请添加图片描述
2、注意%的使用
public class testA {
public static void main(String[] args) {
System.out.println(-20%3);
System.out.println(20%-3);
}
}
请添加图片描述
3、位运算符的使用
& 按位与 只有当&左右的两个数相同的时候才会返回值1
public class testA {
public static void main(String[] args) {
System.out.println(0&0);
System.out.println(0&1);
System.out.println(1&0);
System.out.println(1&1);
}
}
请添加图片描述
| 按位或 只有当 | 左右都取0的时候才会返回值0
public class testA {
public static void main(String[] args) {
System.out.println(0|0);
System.out.println(0|1);
System.out.println(1|0);
System.out.println(1|1);
}
}
请添加图片描述
~ 取反
例:
7 :二进制 00000111
~7: 二进制 11111000
我们看到最高位是1,这表示这个~7得到的是一个负数,负数以补码的形式存储的。是个负数还是比较麻烦的。
先进行减1 : 11110111
再取反:00001000
得到的这个二进制数的值是8
但因为我们一开始知道~7是一个负数,所以我们要对8加上一个负号,即最终结果为:-8
自己求~-7的值,反正我不知道该怎么办了。
^ 按位异或
只有当^左右的两个数不相同的时候,才会输出值1
public class testA {
public static void main(String[] args) {
System.out.println(0^0);
System.out.println(0^1);
System.out.println(1^0);
System.out.println(1^1);
}
}
<< 逻辑左移,<<就是将操作数所有二进制位向左移动制定的位数。运算时,左边移走的部分舍去,右边的空位补0.
>>逻辑右移,就是将操作数所有的二进制位向右移动制定的位数。运算时,左边的空位根据原数的符号位补0或1(原本是负数就全部补1,原本是整数就全部补0),右边移走的部分舍去。
>>>无符号右移,就是将所有操作数所有二进制位不考虑正负向右移动指定尾数。运算时,左边的空位全部补0,右边移走的部分舍去。
对于switch语句,支持字符型,整型,字符串,不支持小数(float、double),也不支持布尔型。
方法的三要素: 方法名、参数、返回值的类型
对于return回去什么类型的值,返回值的类型就是什么。
System.in.read();
用于读取一个字符,返回的是一个整数值,可以通过强制转换转换为字符型,对于输入的是单个字符的时候可以用这种方法。
如果输入的字符很多的时候或者是一个字符串的时候使用:
Scanner sc =new Scanner(System.in);
数据类型 默认初始化值
byte、short、int、long 0
float、double 0.0
char 一个空字符,即’\u0000’
boolean false
引用数据类型(String) null,表示变量不引用任何对象
数组的常用操作:插入、删除、修改、查找、排序、初始化
遍历数组可以使用通过下标使用for循环进行遍历
也可以shying增强for循环来遍历数组
public class testA {
public static void main(String[] args) {
int a[] = {1,2,3,4,5,6,7};
for(int i : a) {