类型转换
类型转换
世界这么大,我们一点一点挖
1.java是强类型语言,有些运算时需要用到类型转换
低-->高
byte,short,char->int->long->float->double
2.运算中,不同类型的数据先转化为同一类型,然后进行计算
3.强制类型转换(由高到低)
类型转换注意可能会出现内存溢出和精度损失的情况
// 内存溢出
int a = 128;
byte b = (byte) a;
System.out.println(a); // 128
System.out.println(b); // -128
// 精度损失
float c = 28.8f;
double d = -39.28;
System.out.println((int) c); // 28
System.out.println((int) d); // -39
4.自动类型转换(由低到高)
// char类型强制转换
char e = 'a';
int f = e + 1;
System.out.println(f); // 98
System.out.println((char) f); // b
// 对较大数进行操作是注意溢出问题
int money = 10_0000_0000; // jdk7新特性,支持数字间添加下划线好认数字
int year = 20;
int totalMoney = money * year;
long totalMoney1 = money * year;
long totalMoney2 = money * (long) year;
System.out.println(totalMoney); // 溢出
System.out.println(totalMoney1); // 溢出,因为money和year是int类型 两者相乘也是int,再转为long
System.out.println(totalMoney2); // 正常
注意点
1.不能对布尔类型进行转换
2.不能把队形类型转换为不相干的类型
3.在把高容量类型转化为低能量类型时需要进行强制转换
4.转换可能出现内存溢出或者精度问题