只是想知道我试图自学的内容是否正确。
我最终会在我的一个程序中得到这样的结果:
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;
}
}
最佳答案
您的第一个 fillArray
存在阴影问题,因为您正在创建一个新的测试实例并初始化它 - 而不是在当前(或 这个
)实例,
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]
}
}
关于java - 我需要一些帮助来理解实例/引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24857171/