1. ホーム
  2. java

[解決済み] Java変数宣言が許可されない【重複

2022-02-08 22:58:45

質問

私は2つのコードを作りました。1つ目は問題なく動作しますが、もう1つはここで変数宣言は許可されませんと表示されます。

最初のコード(動作中)

class Test {
    public static void main(String args[]){
        for(int i=0;i<10;i++) {
            int a[]=new int[10];
        }
    }
}

2つ目のコード(動作しない)

class Test {
    public static void main(String args[]) {
        for(int i=0;i<10;i++)
            int a[]=new int[10];
    }
}

その理由は何でしょうか。どちらのセクションのコードもほぼ同じだと思います。

どのように解決するのですか?

<ブロッククオート

どちらのコードもほぼ同じだと思うのですが、なぜでしょうか?

ほぼ、ですが、そうでもないです。コンパイラが文句を言う理由を理解するために、しばしば 言語仕様 .

の本文は ForStatement Statement . ローカル変数の宣言は Statement - のオプションであり BlockStatement .

これは非常に意図的なものです。無意味なコードを書かないようにするために わざとそうしているのです。の中で唯一のステートメントとしてローカル変数を宣言するのは意味がありません。 for ループまたは if ステートメントなど。他のどこでもスコープ外になるので、なぜそれを宣言するのか?

ブロック内で唯一の文であるケースはやはり無意味ですが、それを防ぐのは言語として難しいでしょう。