0

メソッドの外でJavaの別々の行で配列を宣言して構築すると混乱します。したがって、それはインスタンス変数になります。コンパイルエラーが発生しますが、1行で構築して初期化すると問題ありません。なぜですかこれは起こりますか?

public class HelloWorld {

//This works fine
int anArray [] = new int[5];

//this doesn't compile "syntax error on token ";", , expected"
int[] jumper;
jumper = new int[5];

public static void main(String[] args) {
}


void doStuff() {

    //this works fine
    int[] jumper;
    jumper = new int[5];
}

}

4

3 に答える 3

7
jumper = new int[5];

ステートメントであり、メソッド、コンストラクター、または初期化ブロックに出現する必要があります。

あなたが気づいていると思うので、これを行うことができます:

int[] jumper = new int[5];

変数宣言で割り当てを行うことができるためです。

于 2012-10-09T22:58:07.330 に答える
1

構文を少し変更すると、コンパイラ エラーが修正されます。

int[] jumper;
{
   jumper = new int[5];
}
于 2012-10-09T23:30:56.663 に答える
0

メソッドの外でコマンドを実行することはできません。変数宣言時に値を代入する場合を除きます (初期化ブロックのような一部のケースを除く)。

宣言中に変数を初期化できます。

private int[] numbers = new int[5];

コンストラクタで初期化できます

class MyClass {
   private int[] numbers;

   public MyClass() {
      numbers = new int[5];
   }


}

または、初期化ブロックで初期化します

private int numbers[5];

{
      numbers = new int[5];
}
于 2012-10-09T23:42:08.823 に答える