Java是强类型语言,所以在进行一些计算的时候要进行类型转换。
由低到高:byte , short , char–>int–>long–>float–>double
运算中,不同类型的数据要先转换成同一类型的数据,再进行计算。
强制类型转换
高----->低
格式: (类型)变量名
int i = 128;
byte b = (byte) i;//byte的最大值是127,内存溢出
// 强制转换 (类型)变量名
System.out.println(i);
System.out.println(b);
输出的b是一个-128,因为byte值的范围是-128到127,128已经超出它的范围,它的结果会显示一些其他的数字,原因是内存溢出。
自动类型转换
低----->高
//自动类型转换
int c = 128;
double d = c; //自动转换 低————>高
System.out.println(c);
System.out.println(d);
输出存在精度问题。
精度问题
//把浮点数转换成整数
System.out.println((int)23.7);
System.out.println((int)45.89f);
可以观察到小数点后的数字消失了。
注意点:
1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.高容量转换到低容量时,强制转换
4.转换的时候可能存在内存溢出或者精度问题!