为什么这样调用就会出现空指针异常呢?
public class zb38
{
public static void main(String args[]){
Person p[]=new Person[3];
System.out.println("=========数组声明==========");
for (int i=0;i<p.length ;i++ )
{
System.out.print(p[i]+"、");
}
p[0].setName("张三"); //不同之处
p[1].setName("李四"); //不同之处
p[2].setName("王五"); //不同之处
System.out.println("\n==========对象实例化=============");
for (int i=0;i<p.length ;i++ )
{
System.out.print(p[i].getName()+"、");
}
}
};
class Person
{
private String name;
public Person(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
};
这样调用可以编译通过,但是执行时就会出现空指针异常,然而下面的方法调用就可以编译和运行都通过
public class zb38
{
public static void main(String args[]){
Person p[]=new Person[3];
System.out.println("=========数组声明==========");
for (int i=0;i<p.length ;i++ )
{
System.out.print(p[i]+"、");
}
p[0]=new Person("张三"); //不同之处
p[1]=new Person("李四"); //不同之处
p[2]=new Person("王五"); //不同之处
System.out.println("\n==========对象实例化=============");
for (int i=0;i<p.length ;i++ )
{
System.out.print(p[i].getName()+"、");
}
}
};
class Person
{
private String name;
public Person(String name){
this.name=name;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
};
两种方式不是都通过Person p[]=new Person[3];进行了初始化了吗?为什么第一张方式会出现空指针异常呢?难道对象数组就不能用getName()来获得参数吗?希望高手帮我解答下哈~我刚学java不久,谢谢