将数组作为对象的参数

时间:2014-04-30 01:57:28

标签: java arrays parameter-passing

我试图将一个数组作为参数传递给一个对象,但是它返回了一个空指针异常。

   /**
   *The array that holds all the numbers.
   */
   private int[] nums;

  public IntegerArray(int[] array)
  {
     nums = array;  
  }

编译器声明:

Exception in thread "main" java.lang.NullPointerException
at IntegerArray.<init>(IntegerArray.java:36)

第36行调用nums.length。

1 个答案:

答案 0 :(得分:2)

根据我的理解,这就是你如何创建新的IntegerArray:

 IntegerArray numholder = new IntegerArray(nums);

在尝试获取nums长度时出错。但是,除非您在未发布的代码中将其初始化,否则nums实际上从未初始化。当你说

private int[] nums;

java实际上并没有分配内存。它等待分配数组并给它一个长度。

nums = new int[10];

因此,除非您在调用new IntegerArray(nums);之前在其他地方执行此操作,否则内存尚未分配,并且每次尝试执行与列表关联的操作时都会得到空指针。