由于Java是强类型语言,所以要进行有些运算的时候需要用到类型转换
byte,short,char → int → long → float → double
-
强制类型转换:(类型)变量名 高 → 低
int i = 128; byte b = (byte) i; // 内存溢出 System.out.println(i); // 128 System.out.println(b); // -128 System.out.println((int)23.7); // 23 System.out.println((int)-45.89f); // -45
-
自动转化:低 → 高
int i = 128; double b = i; System.out.println(i); // 128 System.out.println(b); // 128.0 char c = 'a'; int d = c + 1; System.out.println(d); // 98 System.out.println((char)d); // b
注意点:
- 不能对布尔值进行转换
- 不能把对象类型转换为不相干的类型
- 在把高容量转换到低容量的时候,强制转换
- 转换的时候可能存在内存溢出,或者精度问题
常见问题:
操作比较大的数的时候,注意溢出问题
int money = 10_0000_0000;
int year = 20;
int total = money * year;
System.out.println(total); // -1474836480, 计算的时候溢出了
long total2 = money * year;
System.out.println(total2); // -1474836480,默认是int,转换之前已经存在问题了
long total3 = money * ((long)year);
System.out.println(total3); // 20000000000