2-1、基本语法
1、关键字和保留字
- 1、关键字:被Java语言赋予了特殊含义,用作专门用途的字符串,特点是所有字母小写。
volatile:保证变量的内存可见性、禁止指令重排序
- 2、保留字:现有 Java 版本未使用的关键字。
2、标识符
- 1、标识符:凡是自己可以起名字的地方都叫标识符。例如:类名、变量名、方法名、包名、接口名等。
- 2、命名规则
- 由 26 个英文字母大小写,0-9 ,_或 $ 组成 数字不可以开头。
- 不可以使用关键字和保留字,但能包含关键字和保留字。
- Java 中严格区分大小写,长度无限制。
- 标识符不能包含空格。
- 3、命名习惯
- 包名:多单词组成时所有字母都小写:xxxyyyzzz。
- 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz。
- 变量名、方法名(驼峰法):多单词组成时,第一个单词首字母小写,第二个单词开始-每个单词首字母大写:xxxYyyZzz。
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ。
3、变量
- 1、变量的分类
1)存在的位置的不同:
- 成员变量:(属性、Field)(存在于类内部,方法体的外部) 。
- 局部变量:(方法体的内部、构造器的内部、代码块的内部、方法体或构造器的形参部分)。
2)数据类型的不同:
- 2、基本数据类型
数值型:
- 整型:byte(1 个字节)、short、int(默认值类型)、long(后缀是 l 或 L)。
- 浮点型:float(后缀是 f 或 F)和 double(默认值类型)。
- 布尔型:boolean (只有两个值:true 和 false,绝对不会取值为 null)。
- 字符型:char(1 个字符)。
-
3、引用数据类型
- 类(比如:String 字符串类型)。
- 接口。
- 数组。
-
4、变量的声明
变量的类型 变量的名字 初始化值(显式的初始化、默认初始化)
int i;
i = j + 12;
boolean b = false;
String str = "atguigu";
Customer c = new Customer();
注:变量必须先声明后使用,变量的作用域:一对{ }之间有效 初始化值。
- 5、自动类型转化&强制类型转化(不包含 boolean 型,及 String 型)
强制类型转化时,可能会损失精度。
4、进制转换
十进制、二进制、八进制、十六进制
- 1、进制之间的转化:
会将-128 到 127 范围内的十进制转化为二进制 & 能将一个二进制数转换为十进制数(延伸:十进制、二进制、八进制、十六进制)。 对于几类基本类型的数据的某个具体值,能够用二进制来表示。同时,如果给出一个数据的二进制,要能够会转化为十进制!
- 2、原码、反码、补码
正数:原码、反码、补码三码合一。
负数:原码、反码、补码的关系。负数在计算机底层是以补码的形式存储的。
5、运算符
- 算术运算符&赋值运算符
- 比较运算符(关系运算符)
- 逻辑运算符
“&”和“&&”的区别:&:当左端为 false 时,右端继续执行&&:当左端为 false 时,右端不再执行。
“|”和“||”的区别:|:当左端为 true 时,右端继续执行 ||:当左端为 true 时,右端不再执行
- 2、位运算符
<< >> >>> & | ^ ~ - 3、三元运算符
6、流程控制
-
1、if...else...
f(表达式 1){
//执行语句
}else if(表达式 2){
//执行语句
}else{
//执行语句
}1.一旦执行条件判断语句,有且仅有一个选择“路径”里的代码块被执行。
2.如果多条表达式间是“互斥”关系,彼此是可以调换顺序。如果多条表达式间存在“包含”关系,一定要将范围小的表达式写在范围大的表达式对应的语句的上面。
3.选择判断语句可以“嵌套”。若执行语句只有一句,那么对应的一对{}可以省略。 -
2、选择结构:switch-case
1.结构
2.表达式可以存放的数据类型:int byte short char String 枚举
3.表达式存放是数值或者说是离散的点所代表的常量,绝对不是取值范围。
3.default 是可选的。default 的位置也不是固定的,当没有匹配的 case 时,执行 default
4.break 在 switch-case 中的使用。当执行到某条 case 语句后,使用 break 可以跳出当前的 switch 语句。
如果此 case 中没有 break,那么,程序将依次执行下面的 case 语句,直至程序结束或者遇到 break。 -
3、【switch-case 与 if-else if-else 的联系】
- 1.表达式是一些离散的点,并且取值范围不是很大,要求是 int byte short char String 枚举类型之一。建议使用 switch-case。执行效率更高
- 2.如果表达式表示的是范围(或区间)、取值范围很大,建议使用 if-else if-else -
4、循环结构:
①初始化条件②循环条件部分③循环体部分④迭代部分
1.for 循环 for(①;②;④){
③
}
执行顺序:①-②-③-④-②-③-④-…-②-③-④-②截止
//死循环:
for(;;){
//要循环执行的代码。
} -
5、break & continue
break
1.使用范围:循环结构或 switch-case 结构中。
2.在循环结构中:一旦执行到 break,代表结束当前循环。
continue
1.使用范围:循环结构
2.在循环结构中:一旦执行到 continue,代表结束当次循环。
相同点:如果 break 或 continue 后面还有代码,那么这些代码将不会被执行。所以当有代码,编译会出错!
7、数组
-
1、如何创建一维数组
- 1)数组的声明: int[] i ; String[] str; Animal[] animal;
- 2 ) 数组的初始化:
①动态初始化
②静态初始化:str = new String[]{"北京","尚硅谷","java0715 班"};
//也是先有默认初始化赋值,然后显示的初始化,替换原来的默认初始化值 //对于引用数据类型来说,默认初始化值为 null。
//对于基本数据类型来说: byte、short、int :0 long :0L float : 0.0F double :
0.0 char :'\u0000' boolean : false 引用类型:null -
2、数组元素的下角标从 0 开始。
-
3、数组的长度: .length。
-
4、数组的遍历:(习惯使用 for 循环)
for(int i = 0 ;i < f.length;i++){
System.out.print(f[i] + "\t");
}
- 5、常见的异常:
1)ArrayIndexOutOfBoundsException :数组下标越界异常 下标从 0 开始,到 length-1 结束。如果下角标的取值不在此范围内,将报此异常
2)空指针异常(NullPointerException)
- 6、二维数组
1)二维数组的初始化
①动态初始化:
② 静态初始化:
- 7、 数组常用的算法:
最大值、最小值、和、平均数、
排序(涉及数据结构中各种排序算法)、
复制、反转。 - 8、 Array:操作数组的工具类
Array.sort(数组类型形参); 可以对形参部分的数组进行排序,默认是从小到大的顺序。 - 9、垃圾回收机制
其他的语言需要程序员去负责回收分配的内存。
显示回收内存缺点:
忘记及时回收,会导致内存泄露、降低系统性能。
错误的回收程序核心类库的内存,从而导致系统崩溃。
Java 语言不需要程序员去负责回收已经分配的内存,JRE 在后台自动进行回收那些不用的内存,这种机制被称为垃圾回收。