只想知道我试图教自己的是不是正确。
我会在我的一个程序中得到类似的东西:
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;
}
}
答案 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]
}
}