public class Test1
{
public static void main(String[] args)
{
Person[] ps=new Person[100];
System.out.println(ps.length);
//ps[0].name="zhangsan"; //抛出空指针异常
String[] str=new String[100];
System.out.println(str.length);
str[0]="zhangsan";
}
}class Person
{
public String name;
}
两个同样是引用数组初始化,分配好空间后都能打印出长度。(顺便问下,这个.length是什么?方法的话要加(),是成员变量的话,ps.length怎么能访问?)
当通过引用变量访问实例属性或者非静态方法时,该引用为空时,会引发NullPointerException,
那么String数组类型的,怎么没有抛出空指针异常?
只知道如果将name定义成public static String name;就不会抛出异常了...
ps[0].name="zhangsan"; 和 str[0]="zhangsan";有本质的不同,str[0] = "zhangsan"相当于
{
Person p = new Person();
ps[0] = p;
}
如果把str[0] = "zhangsan"换成str[0].charAt(0),LZ试试会不会报空指针异常?
public static void main(String[] args)
{
Person[] ps=new Person[100];
System.out.println(ps.length);
ps[0]=new Person("zhangsan");
//ps[0].name="zhangsan"; //抛出空指针异常
System.out.println(ps[0].name);
String[] str=new String[100];
System.out.println(str.length);
str[0]="zhangsan";
}
} class Person
{
public String name;
public Person(String name){
this.name=name;
}
}
Person[] ps=new Person[100];这只是创建了指向Person数组的引用,实际对象并未初始化,
对象数组(不是基本类型数组)的特点。你必须先NEW一个对象Person[] ps=new Person[10];
ps[0] = new Person();
ps[0].name="zhangsan";
可以不?
我也想来问问看!·#¥
呵呵呵。