0

当我在方法之外的 java 中的不同行上声明和构造一个数组时,我感到很困惑,因此它将是一个实例变量,我得到一个编译错误,但是当我在一行上构造和初始化时很好,为什么这会发生吗?

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 回答