各位小伙伴们大家好,在上一篇文章中,小编介绍的是数据类型的自动转换,这次小编要介绍的是数据类型的强制转换。之前小编有讲过,如果数据要进行自动类型转换,就要符合从小到大的规则,如果不符合从小到大的规则,就无法进行自动类型转换,如果这个时候就需要用到数据类型的强制转换。
在强制类型转换中,代码要需要进行特殊的格式处理,不能自动完成。那么这个特殊的格式处理是怎样的呢?现在,小编来告诉大家,这个特殊的处理格式,范围小的数据类型,范围小的变量名=(范围小的类型)原本范围大的数据。
为了方便大家的理解,小编就在这里粘代码吧。
//long-->int,不符合从小到大的规则
//格式:范围小的类型 范围小的变量名=(范围小的类型)原本范围大的数据;
int num=(int)100L;
System.out.println(num);
关于数据类型的强制转换,小编就先说到这里,大家只要按照格式来进行强制转换就可以了。接下来小编要讲的是强制类型转换的一些注意事项。
第一. 强制类型转换一般不推荐使用,可能会导致精度损失,数据溢出。
那么,什么是数据溢呢?为了方便大家的理解,小编画一个图,来表示一下。
数据溢出
//long强制转换成int,输出结果不一样
int num2=(int)100000000000000L;//数据溢出
System.out.println(num2);
//double-->int
int num3=(int)3.56;//结果为3,精度损失
System.out.println(num3);
第二. byte/short/char这三种类型都可以发生数学运算,如,加法“+”。
char zifu1='A';//字符变量,里面的大写字母A
System.out.println(zifu1+1);//A+1=66,运行结果
//A的二进制数字是65
//char类型进行加法运算时,会把字符当成一个数字来对待
第三. byte/short/char这三种数据类型在运算时,会被首先提升成int类型,然后计算。
byte数据类型
byte num4=40;//右侧数值不可以超过左侧数据类型的范围
byte num5=50;
//byte+byte-->int+int-->int
//byte在运算时会被首先提升为int,所以在运算的时候就已经是一个int,前面需加一个int
int result1=num4+num5;
System.out.println(result1);
short数据类型
short num6=60;
//byte+byte-->int+int-->int
intresult2=num4+num6;//int,同上
System.out.println(result2);
//int转short
short num7=50;
//int也可以强制转换为short,不过逻辑大小不可以超过short范围,不然会发生数据溢出
short result3=(short)(num7+num6);
System.out.println(result3);
第四. Boolean类型不能发生数据类型转换。
关于java当中数据类型的强制转换还有相关注意事项,小编就先说到这里,希望这篇文章可以帮到大家,也欢迎各位小伙伴补充纠错。