我需要一些帮助来理解实例/参考

时间:2014-07-21 03:07:30

标签: java class variables reference instance

只想知道我试图教自己的是不是正确。

我会在我的一个程序中得到类似的东西:

public class Test {
    int array[];

    public static void main(String[] args){
        Test test = new Test();
        test.array = new int[10];
        test.fillArray();

        for(int i=0;i<test.array.length;i++)
            System.out.println(test.array[i]);
    }

    public void fillArray(){
        Test test = new Test();
        for(int i=0;i<test.array.length;i++)
            test.array[i]=i;
    }
}

但我得到一个空指针异常。我似乎遇到了这些类型的问题。适当的规划我的程序有助于此吗?

空指针是因为当我说 new 时,它会创建一个单独的对象,该对象只存在于该方法中正确吗?

除了使数组静态或给它一个参数(或者它是参数......?)之外,还有其他方法可以解决这个问题,就像我在下面做的那样吗?

public class Test {
    int array[];

    public static void main(String[] args){
        Test test = new Test();
        test.array = new int[10];
        test.fillArray(test.array);

        for(int i=0;i<test.array.length;i++)
            System.out.println(test.array[i]);
    }

    public void fillArray(int a[]){
        for(int i=0;i<a.length;i++)
            a[i]=i;
    }
}

1 个答案:

答案 0 :(得分:3)

您的第一个fillArray存在阴影问题,因为您正在创建新的测试实例并对其进行初始化 - 而是在当前(或array)实例中初始化字段this,< / p>

public void fillArray() {
  // Test test = new Test();
  for (int i = 0; i < this.array.length; i++) {
    this.array[i] = i; // <-- this.array or just array[i]
  }
}