类型转换
隐式转换
小范围转大范围,直接用。
小的数据类型和大数据类型在一起运算的时候,小的会先提升为大的之后,再进行运算。
特别关注:byte short char 在运算的时候,都会直接提升为int,然后再进行运算
常量优化机制
byte a = 1 + 2;
>>> a = 3
以上代码正常运行,因为java存在常量优化机制,会在编译的时候就让1和2进行相加,然后判断结果3是否在byte的取值范围内。
如果不在范围内:编译出错
如果在范围内:通过编译(本案例情况)
例如
int a = 10;
double b = a; //正常的隐式转换,double范围比int大
double a = 12.3;
int b = a; //a范围比b大,因此报错
强制转换
适用于大转小
例
double a = 12.3
int b = (int)a
>>b = 12 //小数点后的部分由于强制转换而丢失