类型转换
因为Java属于强类型语言,所以在进行一些运算时,需要用到类型转换。
浮点数类型的优先级要比整数高,所以即使float时32字节,long64字节,float要放在long的前面
在运算时,需要将不同类型的数据先转换为同一类型,然后进行运算。
强制类型转换
(数据类型)变量名 高----------------->低
在使用时注意避免内存溢出问题
public class Demo04 {
public static void main(String[] args) {
int i = 128;
//强制类型转换
byte b = (byte) i;
System.out.println(i);
//byte的最大值是127,给它赋128时会有内存溢出,所以会输出-128
//在使用时尽量避免内存溢出
System.out.println(b);//-128
}
}
自动类型转换
转换时按照上图以 低----------------->高 的方式进行转换,系统会自动进行转换。
注意点
- 不能对Boolean值进行转换
- 不能把对象类型转换为不相关的类型
- 在把高容量的数据类型转换为低容量的时候,使用强制转化;而低容量转换为高容量就是自动转换。
- 在强制类型转换的时候可能会出现溢出问题,数据的精准度问题
注意溢出问题
public class Demo05 {
public static void main(String[] args) {
//注意溢出问题
int money = 1000000000;
int years = 20;
int total = money * years;//-1474836480,出现了溢出问题
System.out.println(total);
long total2=money*years;
//money和years都是int类型,在运算的时候还是会有溢出问题,所以total2得到的是溢出之后的值。
System.out.println(total2);
long total3=money*((long)years);
//在运算之前,先将其中一个数转换为long类型,这样就可以得出正确的结果了
System.out.println(total3);
}
}