类型转换
数据类型精度
byte,short,char->int->long->float->double
低---------------------------------------------------高
1.boolean类型不能进行转换 2.高精度转换为低精度需要进行强制类型转换(但是会出现精度丢失) 3.低精度转换为高精度可以自动进行转换(但是可能会出现内存溢出的问题) 4.不能把数字类型转换为不相干的类型 5.两个不同类型的数值运算中先转换为同一类型再进行计算
强制转换
高精度的数据转换为低精度的数据需要进行强制类型转换。
public static void main(String[] args) {
// 高转低
int i2=128;
System.out.println((byte)i2);
// 运行结果为-128,因为byte只能取0~127区间,超过这个区间导致了内存溢出。
自动类型转
低精度转换为高精度可以进行自动转换
public static void main(String[] args) {
// 低转高
byte i1=127;
double i2=i1;
System.out.println(i2);
}
输出结果:
127.0
说明低精度转高精度不需要变量前加(数据类型)
拓展大数计算
public static void main(String[] args) {
int i1 =10000_0000_0;
int i2 =20;
int i3=i1*i2;
System.out.println(i3);//-1474836480
}
i3的计算结果为-1474836480,这个属于计算过程中溢出
public static void main(String[] args) {
int i1 =10000_0000_0;
int i2 =20;
long i3=i1*i2;
System.out.println(i3);//-1474836480
}
}
我们把i3数据类型换成long依旧造成的溢出
那我们该如何解决呢,只要在计算前进行强制类型转换就可以了
public static void main(String[] args) {
int i1 =10000_0000_0;
int i2 =20;
long i3=(long)i1*i2;
System.out.println(i3);//20000000000
}