我有这个运行但永不停止的代码。
class A {
public static void main(String[] args) {
for (byte index = 0; index < 128; index++)
{
System.out.println(index);
}
}
}
有人可以向我解释为什么它一直在循环。
在 Java 中,byte
只能表示 -128 和 127 之间的值。这意味着 的每个可能值index
都小于 128,并且循环不能以当前条件终止。当index
达到 127 时,它会简单地溢出到 -128 并继续循环。
有关 Java 整数类型的更多详细信息,请参阅JLS。
byte 是 1 字节类型,因此条件 i < 128 始终为真。当您将 1 添加到 127 时,它会溢出并变为 -128 并再次从那里开始。这就是您获得无限循环的原因。
因为它永远不会达到 128.. 字节的最大值只有 127.. 所以当 127+1 时它会变为 -128,这是真的.. 所以它总是会再次循环.. 所以你需要从字节更改为 int。 .