java语言中的整数型字面值被默认当作int来处理
java中的整数型字面值有三种表示方式:
1.十进制
2.八进制:需要以0开始
3.十六进制:需要以0x开始
java程序中的字面值会默认当作int类型来处理
int a = 123 ; 没有错误,123当作int类型赋值给int类型的a
long a =456 ;没有错误,456当作int类型,占用4个字节,a属与long类型,占用8个字节,小容量可以自动转化为大容量
long a = 2147483648 ; 错误 ,21447483648会默认当作int类型来处理,但是int类型最大的取值范围到2147483647 ,所以超过了int类型的取值范围
我们需要将它修改为long类型的数据,需要在数据后面加上L
即:long a = 2147483648L
强制类型转换符
long a = 400L
int b =a
以上程序无法编译通过,因为a属于long类型,属于大容量,而b属于int类型,属于小容量
要想让以上编译成功的话,我们需要加入强制类型转换符
即: int b = (int)a 即在()中写入想要转换的数据类型
而 byte b = 50;
是没有错误的,对于byte类型有有优待,只要字面值没有超过byte类型的取值范围的,就可以不用加强制转换字符
byte b = 130 ;这样就是错误的,因为130超过了byte类型的取值范围,我们需要加上强制类型转换符 byte b=(byte)128 这样就是正确的了
我们需要注意的是,我们使用了强制类型转换符后,可能会损失精度,如果强制类型转换的数字他的大小没有超过转换后的数据类型的最大范围,那么就不会损失精度,如果该数字超过了最大范围,那么转换后的数据的精度会损失。
同样的,当一个数的字面值没有超过byte、short 、char 、类型的最大取值范围,我们都可以进行直接赋值。