数据类型 | 占用空间 | 表示范围 |
byte | 1 | -128~127 |
short | 2 | -2的15次方到2的15次方减一 |
int | 4 | -2的31次方到2的31次方减一 |
long | 8 | -2的63次方到2的63次方减一 |
float | 4 | -3.403的38次方到3.403的38次方 |
double | 8 | -1.798的308次方到1.798的308次方 |
char | 2 | 0~2的16次方减一 |
boolean | 1个bite | true/false |
整型常数默认为int,浮点数默认为double;声明long型常量时可以在后面加L或l,声明float常量时必须后加f或F
自动类型转换
容量小的类型可以自动转换为容量大的类型。容量:表示的范围而不是占的字节数。但当int转换为float,long转为float,double时可能会丢失精度。(疑问:int转换为double会丢失精度吗?),特例:int类型可以自动转换为char,short,byte,只要不超过其范围即可。当不同类型操作数进行运算时,会发生类型提升。
强制转换cast
当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成一个完全不同的值。
进制问题
八进制以0开头 十六进制以0X或0x jdk7及以后,二进制可以以0b开头。jdk7以后可以在常量中加分隔符,如int a = 111_111;
所有的引用类型都是四个字节。