Java数据类型的转换
-
由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。
-
运算中,不同类型的数据要先转化为用一类型,然后进行运算,请根据图标进行转换。
-
强制转换 高-->低(图中右-->左)
int i = 120;
byte b = (byte)i;//强制转换,把int类型转换为byte类型 (需要转换的类型)变量名
-
自动转换 低-->高(图中左-->右)
int i = 120;
long h = i;//自动转换,把int类型转换为long类型
注意点: 1.不能对布尔值进行转换
2.不能把对象类型转换为不相干的类型
3.再把高容量转换到低容量的时候,强制转换
4.转换的时候可能存在内存溢出,或者精度问题
//1.内存溢出
int i = 128;
byte b = (byte)i;
System.out.println(b);
//输出的结果为-128,因为byte的内存容量小于128,所以为负数,这就是内存溢出
//2.精度问题
System.out.println((int) 23.7);
//输出结果为23
System.out.println((int) -45.89f);
//输出结果为-45
//1.计算时的内存溢出
int money = 1000000000;
int years = 20;
int day = 10;
int total = money*years*day;
System.out.println(total);
//输出结果为负数,计算的时候溢出
long total2 = money*years*day;
System.out.println(total2);
//输出的结果为负数,默认是int,转换之前已经存在问题了
long total3 = money*((long)years)*day;
System.out.println(total3);
//输出的结果为正确答案,所以只需要先把一个书转换为long就可以解决