运算中,不同类型的数据先转化为同一类型,然后再进行运算。
低------------------------------------------------>高
byte,shart,char,--->int-->long-->float-->double
类型转换分为:强数据类型转换 和 自动类型转换
- 强制类型转换 (高------->低转换) (转换类名)变量名
例如:
int i=127;
byte b=i; //错误 会提示赋值b=i 要进行强制类型转换 i前面加上(byte)转换的类名
byte b=(byte)i; //正确
- 自动类型转换 (低---->高) 变量名前什么也不添加
例如:
int i=128;
double b=i; //b等于i int转换double 自动转换
注意:
- 不能对布尔值进行转换。
- 不能把对象类型转换为不相干的类型。
- 再把高容量转换为低容量时为强制类型转换,反之 自动转换。
- 转换的时候,可能存在内存溢出或精度问题。
操作比较大的时候注意溢出问题
例如:
int money=10_0000_0000; //数字之间可以用下划线进行分割,不会运行出来
int years=2;
int total=money*years;
//输出:-14748364880 不对 计算的时候溢出了
long total2=money*years;
//默认是int,转换之前已经存在问题
long total3=money*(long)years;
//先把一个数转换为 long 正确