数组未在构造函数中实例化

时间:2019-03-14 01:27:50

标签: java nullpointerexception global-variables instantiation

我不明白为什么在构造函数中未实例化数组。

这是我的代码示例:

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吗?

2 个答案:

答案 0 :(得分:0)

从您的“构造函数”中删除void:)

答案 1 :(得分:0)

OOF!

正如Jorn Vernee指出的那样,我的构造函数不再是构造函数了,因为我添加了一个void!通过摆脱void,所有问题都得到解决!