今天在阅读装箱和自动装箱时,我想出了一个场景,发现我陷入无限循环的特殊行为。
我检查了我的代码两次,但没有发现任何错误。 如果有人可以查看并建议我哪里做错了,这样我就会出现这个无限循环
请找到以下代码。
public class InTheLoop {
public static final int END = Integer.MAX_VALUE;
public static final int START = END - 100;
public static void main(String[] args) {
int count = 0;
//Infinite loop starts.
for (int i = START; i <= END; i++) {
count++;
System.out.println(count);
}
// This never got printed.
System.out.println("hi I am out of for loop" +count);
}
}
最佳答案
请注意您的 END
等于 Integer
的最大可能值可以持有(值为 2147483647
)。这意味着对于 i
的任何值可能持有,i <= END
总是正确的。当i
实际达到2147483647
, 它仍然是 <= END
.在下一次迭代中,您尝试将其递增 1,这会导致溢出,并且 i
变成 -2147483648
, 这仍然是 <= END
, 循环一直持续下去。
关于java - java中for循环的特殊行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34126778/