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