当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,
这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。
当使用类型转换给byte类型的数据赋值时:
数值范围小的数据类型可以直接赋值给数值范围大的数据类型,无需进行类型转换
数值范围大的数据类型赋值给数值范围小的数据类型时需要进行强制类型转换。
当超出范围则会伴随数据溢出,如:
Java中byte类型的数据范围为-128~127
int i = 200; byte b2 = (byte) i; System.out.println(b2); |
此时输出结果为-56,为什么?
原因在于,计算机在存储及对数据进行运算时都是以二进制补码的形式进行的,此时是int类型,二进制为32位,即00000000000000000000000011001000,存储时会转换为补码:
00000000000000000000000011001000(正数的原码和补码相同),当进行类型转换运算时,byte类型仅占一个字节,即八位二进制数,则转换时直接截取后八位,得到11001000,其中最高位为符号位,此为转换后的补码,展示给用户时,需将该补码转换为原码,即符号位不变,按位取反再加1,得到10111000即-56 。
需要更多教程,微信扫码即可
👆👆👆
别忘了扫码领资料哦【高清Java学习路线图】
和【各学科全套学习视频及配套资料】