数据类型转换
数据类型转换
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
强制转换
当数据类型不一样时,将会发生数据转换,由大范围的数据类型向小范围的数据类型进行转换时,需要用强制转换。
格式:(类型)变量名
注意事项:
- 强制类型转换一般不推荐使用,因为可能发生精度损失、数据溢出
- byte/short/char 这三种类型都可以发生数据溢出
- 布尔值不能进行强制转换
- 不能把对象类型转换为不相干的对象类型。
int i=128;
byte b=(byte) i;
//内存溢出,转换的时候需要避免
System.out.println((int)23.7);
//发生精度损失,输出结果为:23
自动类型转换
当小范围数据类型向大范围数据类型转换时,会发生自动类型转换。
double num1=i;
System.out.println(num1);
//输出结果:128.0
常见问题
数据比较大的时候,注意溢出问题。
JDK7的新特性,数字之间可以用下划线分割
int num1=10_0000_0000;
System.out.println(num1);
//输出不变
int money=10_0000_0000;
int years=20;
int total=money*years;
long total2=money*years;
//默认是int,转换之前就已经出现问题了,数据溢出
long total3=money*(long)years;
System.out.println(total3);