3

我有这个运行但永不停止的代码。

class A {
   public static void main(String[] args) {
      for (byte index = 0; index < 128; index++)
      {
          System.out.println(index);
      }
   }
}

有人可以向我解释为什么它一直在循环。

4

3 回答 3

12

在 Java 中,byte只能表示 -128 和 127 之间的值。这意味着 的每个可能值index都小于 128,并且循环不能以当前条件终止。当index达到 127 时,它会简单地溢出到 -128 并继续循环。

有关 Java 整数类型的更多详细信息,请参阅JLS

于 2012-06-17T06:58:59.573 回答
3

byte 是 1 字节类型,因此条件 i < 128 始终为真。当您将 1 添加到 127 时,它会溢出并变为 -128 并再次从那里开始。这就是您获得无限循环的原因。

于 2012-06-17T07:00:31.377 回答
0

因为它永远不会达到 128.. 字节的最大值只有 127.. 所以当 127+1 时它会变为 -128,这是真的.. 所以它总是会再次循环.. 所以你需要从字节更改为 int。 .

于 2013-11-05T11:42:24.173 回答