java 函数调用的问题
我在函数中调用本类的对象 ,用本类的对象调用一个一开始就构造的数组,
但是我一在函数用传的形参调用数组就会
空指针异常
public class g {
private int a[];
public g(){
int a[]=new int[4];
}
public void f(g t){
for(int i=0;i<4;i++){
System.out.println(t.a[i]);
}
}
}
public class gT {
/**
* @param args
*/
public static void main(String[] args) {
g a=new g();
a.f(a);
}
}
这只是我把有错的地方提了出来 我想了解函数调用对象细节, 求大神了!!
java
class
string
------解决方案--------------------private int a[];
是一个成员数组,名字叫a,没有初始化。
public g(){
int a[]=new int[4];
}
则是局部数组了,虽然初始化了,但初始化的不是成员数组,可以这样为成员数组初始化:
public g(){
int a[]=new int[4];
this.a=new int[4];//这才是为成员数组赋值
}
这样说,明白否?
------解决方案--------------------
private int a[];
public g(){
int a[]=new int[4];
}
楼主这样写的话,类里的私有成员数组 a 没有赋值,在构造方法里,楼主相当于声明了一个方法里的局部变量 a. 里面的和外面的不是一个了。
构造方法改一下:
public g(){
//int a[]=new int[4];
a=new int[4];//初始化成员变量。
}