次の Java コードはコンパイルされません。
int a = 0;
if(a == 1) {
int b = 0;
}
if(a == 1) {
b = 1;
}
b
なぜでしょうか?最初に宣言せずに 1 を割り当てるプログラムに至るコード パスは存在しません。
b
変数のスコープは最初のステートメントに限定されるかもしれないと思いましたif
が、その理由がわかりません。パフォーマンスを向上させるために、本当に不必要な宣言をしたくない場合はどうすればよいですかb
? 宣言後に変数が未使用のままになるのは好きではありません。
(2 番目のステートメントで b を単に宣言できると主張したいかもしれませんがif
、その場合は、それがどこか別のループ内にあると想像してください。)
ベストアンサー1
変数は条件文内で宣言できます。ただし、b
異なるスコープでアクセスしようとします。
ここで b を宣言すると:
if(a == 1) {
int b = 0;
}
それは最後までの範囲内です}
。
したがって、この行に到達すると:
b = 1;
b
存在しない。