public class Test {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100; public static void main(String[] args) {
int count = 0;
for (int i = START; i <= END; i++)
count++;
System.out.println(count); }
}上面的代码,运行的结果出乎我的预料,可能是FINAL关键字的问题,请大家来帮我解释下,谢谢
当到达Integer.MAX_VALUE之后继续加1,就会默认的变为Integer.MIN_VALUE,所以形成了无限循环。
public class test {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100; public static void main(String[] args) {
int count = 0;
for (int i = START; i <END; i++)
count++;
System.out.println(count); }
}这样没问题,说明在END+1的时候
出问题了,楼上的正解!
public static final int END = Integer.MAX_VALUE;for (int i = START; i <= END; i++)注意这两行代码特别注意 i <= END; i++
public class Test {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100; public static void main(String[] args) { System.out.println(START);
System.out.println(END+1);
System.out.println(END+1);
}
}输出结果为:
2147483547
2147483647
-2147483648结论:当你程序中的循环变量 i由 START递增到END之后,再递增一次就变成-2147483648了,
因为 i=-2147483648仍然满足循环条件i <= END ,所以会继续执行,如此反复,形成死循环。
3楼正解!!