java中的数据转换分为隐式转换和强制类型转换
隐式转换:
Java中的默认取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算 。
例: int a =3; byte b = 4; 当计算a+b时,因a是整型,b是byte型,a的精度比b高,所以当a和b进行运算时,JVM会自动将b转换为int型,再与a进行运算
强制转换:
int a=3;
byte b=4;
byte c=a+b;
System.out.printlc(c);
当编译该程序时,系统将会报错,原因是a属于整型,b属于byte型,其计算结果为int型,而c为Byte型,会导致精度损失
采用强制类型转换:
int a=3;
byte b=4;
byte c=(byte)(a+b);
System.out.printlc(c);
我们可以看到,系统能正确编译并输出结果为7
注意:有自增自减或扩展赋值符(+= , -=)的时候,java优化机制会自动转换数据类型
byte b = 10;
b++; //等价于b=(byte)(b+1)
b = b + 1; // 此语句编译时则会报错