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 の間の値のみを表すことができます。これは、のすべての可能な値がindex128 未満であることを意味し、ループは現在の条件で終了できません。127にindex達すると、単にオーバーフローして -128 になり、ループが続行されます。

Java の整数型の詳細については、JLSを参照してください。

于 2012-06-17T06:58:59.573 に答える
3

byte は 1 バイト型なので、条件 i < 128 は常に true です。127 に 1 を追加すると、オーバーフローして -128 になり、そこから再び開始します。そのため、無限ループが発生します。

于 2012-06-17T07:00:31.377 に答える
0

128に達することは決してないため..バイトは最大127しかないため..127 + 1の場合、-128に変更されます..したがって、常にループします..バイトからintに変更する必要があります. .

于 2013-11-05T11:42:24.173 に答える