自动转换
- 容量下可自动转换为容量大的,这里容量大小不是字节数,而是表数范围 ,long(8字节)可转换为float(4字节)
- 实线代表无精度损失的类型转换,虚线代表可能有精度丢失的自动类型转换
- 整型常量可以直接赋值给byte\short\char类型,只要不超过表数范围,则可以自动转换
- 算术运算符,两个操作符都是整型,有一个是long,结果为long。否则结果为int,即使两个操作数是byte,结果也是int
- 有个操作数是double,结果为double
强制转换
如下例
double m1 = 3.14;
int m2 = (int)m1; //m2=3小数部分被直接丢弃
将一种类型强制转换为另一种类型时,而又超过目标类型的表数范围,会被截断为一个完全不同无意义的值
- 溢出错误:操作比较大的数要留意是否溢出,要注意数字类型
int salary = 1000000000;
int years = 30;
long total = 1L * salary * years;