日期:2014-05-20  浏览次数:20671 次

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];//初始化成员变量。
}