如下代码,New以对象数组Hi[]为成员,在New的构造方法里已经正确创建了Hi[0],在构造方法调用Hi[0].Hello也没问题。但为什么在sayHello里调用Hi[0].Hello会提示空指针异常?
莫非在构造函数外Hi[0]会消失?
class Hi{
void Hello(){
System.out.println("Hello");
}
}
class New{
Hi[] NewHi;
New(){
Hi NewHi[] = new Hi[2];
NewHi[0]=new Hi();
NewHi[0].Hello();
}
void sayHello(){
if(NewHi[0]==null){System.out.println("New[0]消失");}
else NewHi[0].Hello();
}
}
public class Test{
public static void main(String args[]){
Hi hi[] = new Hi[2];
hi[0]=new Hi();
hi[0].Hello();
//在函数里可以
New niao = new New();//在构造函数里行
//niao.NewHi[0].Hello(); 这一句不行
niao.sayHello();//空指针异常
}
//总结,只能在函数里用。出了函数会消失
}