実行されるが停止しないこのコードがあります。
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 未満であることを意味し、ループは現在の条件で終了できません。127にindex
達すると、単にオーバーフローして -128 になり、ループが続行されます。
Java の整数型の詳細については、JLSを参照してください。
byte は 1 バイト型なので、条件 i < 128 は常に true です。127 に 1 を追加すると、オーバーフローして -128 になり、そこから再び開始します。そのため、無限ループが発生します。
128に達することは決してないため..バイトは最大127しかないため..127 + 1の場合、-128に変更されます..したがって、常にループします..バイトからintに変更する必要があります. .