各位小伙伴们大家好,在上一篇文章中,小编介绍的是数据类型的自动转换,这次小编要介绍的是数据类型的强制转换。之前小编有讲过,如果数据要进行自动类型转换,就要符合从小到大的规则,如果不符合从小到大的规则,就无法进行自动类型转换,如果这个时候就需要用到数据类型的强制转换。

在强制类型转换中,代码要需要进行特殊的格式处理,不能自动完成。那么这个特殊的格式处理是怎样的呢?现在,小编来告诉大家,这个特殊的处理格式,范围小的数据类型,范围小的变量名=(范围小的类型)原本范围大的数据。

为了方便大家的理解,小编就在这里粘代码吧。

//long-->int,不符合从小到大的规则

//格式:范围小的类型 范围小的变量名=(范围小的类型)原本范围大的数据;

int num=(int)100L;

System.out.println(num);

关于数据类型的强制转换,小编就先说到这里,大家只要按照格式来进行强制转换就可以了。接下来小编要讲的是强制类型转换的一些注意事项。

第一. 强制类型转换一般不推荐使用,可能会导致精度损失,数据溢出。

那么,什么是数据溢呢?为了方便大家的理解,小编画一个图,来表示一下。

date java强制类型转换 java如何进行强制类型转换_System

数据溢出

//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当中数据类型的强制转换还有相关注意事项,小编就先说到这里,希望这篇文章可以帮到大家,也欢迎各位小伙伴补充纠错。