Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';在java中,是否在方法之外声明并初始化数组?_Java_Arrays - Fatal编程技术网

为什么可以';在java中,是否在方法之外声明并初始化数组?

为什么可以';在java中,是否在方法之外声明并初始化数组?,java,arrays,Java,Arrays,当我在java中在方法之外的单独行上声明和构造数组时,我感到困惑,因此它将是一个实例变量,我得到一个编译错误,但是当我在一行上构造和初始化时,它是好的,为什么会发生这种情况 public class HelloWorld { //This works fine int anArray [] = new int[5]; //this doesn't compile "syntax error on token ";", , expected" int[] jumper; jumper = ne

当我在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];
}
}

是语句,必须出现在方法、构造函数或初始化块中

我想你知道,你可以这样做:

int[] jumper = new int[5];

正如您可以在变量声明中进行赋值一样。

一个小的语法更改将修复编译器错误:

int[] jumper;
{
   jumper = new int[5];
}

您不能在方法之外运行命令。除了在变量声明时赋值(som情况除外,如初始化程序块)

您可以在声明期间初始化变量:

private int[]number=新int[5]

您可以在构造函数中初始化

class MyClass {
   private int[] numbers;

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


}
或者在初始化块中初始化它

private int numbers[5];

{
      numbers = new int[5];
}

它有一个名称,称为初始值设定项块,如下所示:
private int numbers[5];

{
      numbers = new int[5];
}