引子
由于Java是强类型语言,所以要进行运算的时候,需要用到类型转换
运算中,不同类型的数据先转化为同一类型,在进行运算
低------------------------------------------------------------高
byte,short,char -> int -> long -> float -> double
转换方法类型
强制类型转换
由高到低需要强制转换(如由int到byte),例:
int i = 128;
byte b = (byte)i;//内存溢出,byte只能表示-128~127
自动类型转换
由低到高直接自动转换(如由byte到int),例:
byte i1 = 127;
int b1 = i1;
注意事项
不能对布尔值进行转换;
不能把对象类型转换为不相干的类型;
在把高容量转换为低容量的时候,强制转换;
转换时可能存在精度问题或内存溢出问题,如:
int money = 1_000_000_000;
int years = 20;
int total = money*years;//-1474836480,计算时溢出了
System.out.println(money);
System.out.println(total);
long total2 = money * years;
System.out.println(total2);//默认是int,转换之前已经存在问题
long total3 = (long)money * years;
System.out.println(total3);//先把一个数转换为long