我不明白为什么在构造函数中未实例化数组。
这是我的代码示例:
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执行:java sandBox
10
0
线程“ main”中的异常java.lang.NullPointerException
在sandBox.main(sandBox.java:21)
---- jGRASP楔2:进程的退出代码为1。
---- jGRASP:操作完成。
自然,正确地打印了arrayTest.length,表明该错误不在我的语法中。
test.x也可以正确打印,表明我的构造函数sandBox()在实例化x(一个int)方面也“起作用”。
但是,一旦我们需要打印test.array.length,我就会得到空指针错误。为什么?数组的长度不是5吗?
答案 0 :(得分:0)
从您的“构造函数”中删除void
:)
答案 1 :(得分:0)
OOF!
正如Jorn Vernee指出的那样,我的构造函数不再是构造函数了,因为我添加了一个void!通过摆脱void,所有问题都得到解决!