java自动类型转换
示例一:
在java中数值类型默认类型为int类型,如果使用以下代码:
byte b = 3;
这里的3是int类型的数值,但是却可以赋值给byte类型的b,其实这里编译器会判断右边的3是否超出byte类型的范围-128~127,如果没有超过就会自动把int数值转为byte类型,再赋值给b。如果超过就会编译报错,精度丢失。
示例二:
byte b = 3;
b = 3 + 3; //可以通过编译,这里将3+3得到的结果进行检查,再赋值给b,相当于b = 6。
b += 3; //可以通过编译,+=相当于一个赋值语句,这里会把b和3相加得到的值,自动转换为byte类型的值,再赋值给b,相当于b =(byte) (b + 3)。
b = b + 3; //编译报错,因为b是一个byte类型的变量取值不确定,可能会丢失精度。
示例三:
int i = 3;
i = 3 + 3;
i += 3;
i = i +3;
均可以编译通过,因为java数值类型默认int类型,int类型有4个字节,就算运算后的结果超过四个字节,java虚拟机也会舍弃多余的位数,自用转换成int类型的值。