声明:如有不对,请联系笔者,及时改正,共同学习。
先上一段代码:
- public static void main(String[] args) {
- byte b = (byte)(129);
- System.out.println(b);
- }
main方法里面有这么一段。
大家都知道Java里面byte取值范围在-128~127之间,上面这段代码很显然已经超出byte范围,但不会报错。也能输出结果,结果为-128。为什么会是这个结果呢?
涉及到补码运算。过程是先将b,就是127转换成Int型的,然后加1,最后截掉高八位,剩下10000000,Byte是有符号的,所以这个值所有为取反在加1就是它的绝对值,所以这个数就是-128。
欢迎讨论。
















