Java 为什么我可以在整数的最大值上加一?

Java 为什么我可以在整数的最大值上加一?,java,integer,Java,Integer,为什么我可以在最大值int的基础上加1? 此代码的输出为-2147483648。这不是只有当biggerValue的类型是long时才可能的吗?我想不会吧 public class Test { public static void main (String[] args) { AddOne addOne = new AddOne(); System.out.println("The value of bigger is " + addOne.plusOne());

为什么我可以在最大值int的基础上加1? 此代码的输出为-2147483648。这不是只有当biggerValue的类型是long时才可能的吗?我想不会吧

public class Test {
    public static void main (String[] args) {
    AddOne addOne = new AddOne();
    System.out.println("The value of bigger is " + addOne.plusOne()); 
    }
}

class AddOne {
    public long plusOne() {
        int value = Integer.MAX_VALUE;
        int biggerValue = value + 1;
        return biggerValue;
    }
}
报告说:

如果整数加法溢出,则结果为低阶 以足够大的数值表示的数学和的位数 二补格式。如果发生溢出,则 结果与两者的数学和的符号不同 操作数值


你应该用位来计算这个数字。一个位被累积,发生溢出。由于整数是有符号的,所以一位流入用作符号的位

 01111111 11111111 11111111 11111111 Base10: Integer.MAX_VALUE
+00000000 00000000 00000000 00000001 Base10: 1
____________________________________
=10000000 00000000 00000000 00000000 Base10: -2147483648

biggerValue
的类型不会改变计算
value+1
的方式。1up用于逻辑表达式。