【发布时间】:2014-07-21 03:07:30
【问题描述】:
只是想知道我想教自己的是否正确。
我会在我的一个程序中得到这样的结果:
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 方法中简单地引用类的字段数组。我假设您的目标是在 main. 创建的测试实例中填充数组字段
-
是的,我正在尝试填充我在 main() 中创建的测试实例的数组字段。我将如何去引用类的字段数组而不是静态的
-
见 Elliots 的回答。不要参数化你的fillArray方法,直接引用类的字段'array'。
-
你应该在构造函数中初始化你的类成员。
标签: java class variables reference instance