1 常量 整数
byte | 1字节 | 8位 | -27~27-1 | 0111 1111 ~1000 0000 |
short | 2 | 16 | ||
int | 4 | 32 | ||
long | 8 | 64 |
1111 1111、1000 0000代表的是-1 -128的补码,负数所谓的补码就是他们绝对值的原码的取反加+1
比如 -1的绝对值是1 1的原码是0000 0001 反码是 1111 1110
反码+1 也就是补码就是 1111 1111
-128的绝对值是 128 原码是 1000 0000 反码是 0111 1111
反码+1 也就是 1000 0000
在内存中 存放的都是补码 正数的补码与其原码相同,而负数的补码是 其绝对值的原码的反码+1
byte b = 12; long l = b;//ok 小-大 类型提升 自动转换 int i = 1; b = i;//no 大-小 丢失精度 b = (byte)i;//强制转换 编译通过 但不就是精度保证后果
2 常量 浮点数(小数)
float | 4字节 |
double | 8字节 |
float f = 4.5f; double d = 4.3;//小数默认是double类型的精度双精度,所以定义float类型时小数后面要加f,相当于强制转换
3 常量 boolean 值为true和false,只有这两个值占一个字节
4 常量 字符 char 占2个字符 unicode编码