if文で変数を宣言できないのはなぜですか? 質問する

if文で変数を宣言できないのはなぜですか? 質問する

次の 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存在しない。

おすすめ記事