private final static int MAX = Integer.MAX_VALUE;
private final static int START = MAX -100;
public static void main(String[] args) {
int j = 0;
System.out.println(START);
System.out.println(Integer.MAX_VALUE);
for(int i = START;i<Integer.MAX_VALUE;i++){
j++;
}
System.out.println(j);
}
输出:100;
private final static int MAX = Integer.MAX_VALUE;
private final static int START = MAX -100;
public static void main(String[] args) {
int j = 0;
System.out.println(START);
System.out.println(Integer.MAX_VALUE);
for(int i = START;i<=Integer.MAX_VALUE;i++){
j++;
}
System.out.println(j);
}
死循环,无输出;
原因解析:
int 的最大值为2147483647,二进制字节码为:0111111*,当Integer.MAX_VALUE+1时,结果为100000*,当首位为1时,表示为负数,即Integer.MAX_VALUE+1 = Integer.MIN_VALUE,所以会造成i<=Integer.MAX_VALUE恒成立,形成死循环