基础数据类型
byte 8位(-128~127)
short 16位(-215~215-1)
int 32位
long 64位 默认值为0L
float 32位 单精度,不能表示精确值。默认值为0.0f
double 64位 双精度,不能表示精确值。默认为0.0d
boolean 表示一位信息,默认值false
char 单一的16位unicode字符
单双精度的区别主要体现在占用内存不同,从而导致双精度的范围更大、有效数字更多。
修饰符
访问修饰符
private 同一类中可见,子类无法继承
default 同一包内可见
非访问修饰符
- static 声明独立于对象的静态变量
- abstract 抽象类无法实例化对象,只能被子类继承。抽象方法具体实现由子类提供
- transient 序列化时JVM跳过该变量,序列化保存的状态中不存在该变量
- volatile 每次被线程访问时,都必须同共享内存中重新读取该变量的值。保证线程之间共享的值相互之间可见,但是如果对volatile的值进行修改由于无法保证原子性(一个操作不能中断)所以修改是线程不安全的。
参考流程如下:
线程1和2同时操作volatile数据A++。当两个线程从主内存获取到A的状态为0,线程1进行计算改变A的状态为1(这个时候还是在线程1的工作内存中),同理线程2的工作内存中A的计算后状态也是1。最后主内存的A被更新了两次,但是两次都是将变量更新为1。
运算符
instanceOf 用于检查对象类型(这个竟然是运算符)
循环
- for
for(初始化; 布尔表达式; 更新)
for(声明语句 : 表达式) java5引入的增强型循环 - while
while(布尔表达式)只要布尔表达式为true,循环体会一直执行下去 - do…while
do…while循环和while循环相似,不同的是,do…while循环至少会执行一次
break关键字用于跳出循环或switch语句。break默认跳出当前一层循环,但是如果在多个循环外有标签,可以直接break标签名跳出多层循环。
first:while(true){
secone:while(true){
break first;
}
}
continue关键字不执行之后的语句直接进入下一次循环表达式检测,也可以使用标签,主要用于控制进入外层循环的下一次表达式检测。
分支判断
if ---- else ---- else if
switch case
switch(expression){//表达式
case value :
//语句
break; //可选
case value :
//语句
break; //可选
//你可以有任意数量的case语句
default : //可选
//语句,没有case匹配时进入执行default的代码
}