数据类型转换
-
不同数据类型之间运算前必须转换成相同的数据类型。
-
Java数据类型按容量由低到高排序:
byte,short,char–>int–>long–>float–>double
-
注意事项:
1. 不能把boolean类型进行类型转换 2. 不能把对象类型转换成不相关类型的对象 3. 容量大的类型转换成容量小的类型须用强制类型转换,容量小的类型转换成容量大的类型为自动转换 4. 转换过程中可能导致溢出或损失精度 5. 浮点数转换成整数是通过舍弃小数获得,而不是四舍五入
public class Demo{
public static void main(String[] args){
int i = 128;
byte b = (byte)i; // -128,内存溢出
(int)23.7 == 23;
(int)-45.89f == -45; // 损失精度
}
}
- 关于char类型数据:
public class Demo{
public static void main(String[] args){
char c = 'a';
int i = c+1;
System.out.println(i); // 98
System.out.println((char)i); //b
}
}
- 操作比较大的数时,注意溢出问题
public class Demo{
public static void main(String[] args);{
int money = 10_0000_0000;
//JDK7新特性:数字之间可以用下划线分割
int years = 20;
int total = money*years;
System.out.println(total);
// -147483680,内存溢出
long total2 = money*years;
// 依然溢出,默认是int计算后转换,计算完成后再已经溢出。
long total3 == (long)money*years;
//或long total3 ==money*((long)years);
System.out.println(total3); //数据正常。
}
}