我不明白为什么我的数组未在构造函数中实例化。
这是我的代码的示例:
public class sandBox {
int array[];
int x;
public void sandBox() {
array = new int[5];
x = 0;
}
public static void main(String[] args) {
sandBox test = new sandBox();
int arrayTest[];
arrayTest = new int[10];
System.out.println(arrayTest.length);
System.out.print(test.x);
System.out.print(test.array.length);
}
}
这是我的运行时间给我的:
----- jgrasp exec:java sandbox
10
0
线程中的异常" main" java.lang.nullpointerexception
在sandbox.main(sandbox.java:21)
----- jgrasp wedge2:流程的退出代码为1。
----- jgrasp:完成操作。
自然地正确打印了arraytest.length,表明该错误不在我的语法中。
test.x也正确打印,显示我的构造函数Sandbox()也"工作",因为它实例化x(a int)。
但是,一旦我们需要打印test.array.length,我就会得到空指针错误。为什么?数组不是长度为5?
从"构造函数"中删除 void
:)
oof!
正如Jorn Vernee所指出的那样,我的构造函数不再是构造函数,因为我添加了空白!通过摆脱空白,解决了所有问题!