当我在一个方法之外的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];
}
}
答案 0 :(得分:7)
jumper = new int[5];
是一个语句,必须出现在方法,构造函数或初始化块中。
我想你知道,你可以这样做:
int[] jumper = new int[5];
因为可以在变量声明中进行赋值。
答案 1 :(得分:1)
小的语法更改将修复编译器错误:
int[] jumper;
{
jumper = new int[5];
}
答案 2 :(得分:0)
你根本无法在方法之外运行命令。除了在变量声明上赋值(除了像初始化程序块这样的som情况)。
您可以在声明期间初始化变量:
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];
}