当索引<时,循环的Java字节不会停止运行128

时间:2012-06-17 06:57:01

标签: java byte

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

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

有人可以向我解释为什么它会循环播放。

3 个答案:

答案 0 :(得分:12)

在Java中,byte只能表示-128到127之间的值。这意味着 index 的每个可能值都小于128,并且循环无法终止与目前的情况。当index达到127时,它只会溢出到-128并且循环继续。

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

答案 1 :(得分:3)

字节是1字节类型,因此条件i&lt; 128总是如此。 当你添加1到127时,它会溢出并变为-128并再次从那里开始。这就是为什么你会得到无限循环。

答案 2 :(得分:0)

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