强制转换数据溢出情况
举例: int转byte
int exampleB2 = 129; //129往前移两位得-127 System.out.println((byte)exampleB2); //-127 int exampleB3 = -129; //-129往前移一位得127 System.out.println((byte)exampleB3); //127 int exampleB4 = 256; //256往前移(256-127=129)位,即0 System.out.println((byte)exampleB4); //0
分析:
想象这个范围是在数轴上一直连续的区间
以中间这个区间为起始区间,当int = 129时,超出了区间(129-127 = 2)位,在对应的连续区间里的位置是第二位,第一位是-128,第二位是-127,所以此时强制转换打印的值是-127,而不是129
以中间这个区间为起始区间,当int = -129时,超出了区间(-128 - (-129) = 1)位,在对应的连续区间里的位置是第一位,数一位,第一位是127,所以此时强制转换打印的值是127,而不是129