最初のループは無限ループです。条件は常に真であるため、常に満たされます。
それは書くようなものです:
int i=0;
while(true)
i++;
ご覧のとおり、条件は常にtrueあり、これを変更するものはありません。
2番目のループはUnreachable code、このループの下にあるコードに到達することはないためです(false常にfalseであり、変更することはありません)。したがって、冗長です。
14.21章を参照してください。到達不能なステートメント
プログラマーが人間であることを知っているのでJava:)間違いを防ぐためにこれについて通知します。
または、その下のコードは実行されないwhile(false)ため、2番目のループ(またはループ)は意味をなさないことに注意してif(false)...ください。そうではないかもしれないので、この場合、コンパイラはそれについて文句を言いません。while(false)if(false)else
OPアップデートについて:
3番目のケースでは、値が変数に割り当てられているため、コンパイルエラーは発生しませんfalse。この場合、変数を再割り当てしてtrue値を含めることができます。したがって、コンパイラはエラーを発生させません。変数がとして宣言されている場合、finalこの変数を新しい値に割り当てることはできないため、コンパイラーでエラーが発生することに注意してください。したがって、forループの下のコードに到達できなくなります。