这里写自定义目录标题
2021-1-12复习java第二天(查缺补漏)
自动类型转换
数据范围从小到大,即进行类型的自动转换
具体的几个基本数据类型可以进行自动数据类型转换为:
int ==> long ==> float ==>double
强制类型转换(强转)
数据范围从大到小,需要进行强转:
int <== long <== float <== double
但是使用强转时有几点注意:
1.我们一般不推荐使用强制类型转换,因为有可能发生精度损失,比如:float ==> int 时,如果将2.5f转为int时会变成2,在有些情况这并不是我们想要的。
2.有可能发生数据溢出。比如:long ==> int 时,int类型能存储的最大数值为2147483647,而long类型能存储的最大数值为9223372036854775807,如果一个long类型变量大于int类型存储的最大数值,此时进行强转,会发生数据溢出的情况。编译器并不会报错,但是结果不对,是因为格式正确但逻辑是错的。
3.byte/short/char均可发生数学运算,前提是会先提升为int类型再进行计算,但是计算后不能超过被赋值数据类型表示的最大范围
4.boolean类型,不可以进行类型转换。
运算符
1.如果参与运算的数据类型不一样,则会先提升数据类型保持一致,再进行计算。例如:
int + double ==> double + double
2.任何数据类型和字符串连接均为字符串。例如:
System.out.println(“Java”+50+20);//Java5020
System.out.println(“Java”+( 50+20) );//Java70
3.byte/short/char进行计算时,例如:
byte num = 50;
num += 50;//100 => byte类型
过程:
num += 50 ==> num = num + 50
byte ==> byte + int
byte ==> int + int
num = (byte)( int + int );
注意:计算结果不能超过等号左边数据类型的范围。