【java基础】引用类型数组初始化中,setter和getter函数空指针问题
在java引用类型数组初始化中,setter和getter函数空指针问题会很常见,究竟是怎么样引起的,做一个小小的分析。
首先来一个简单的代码:
class Student {
private String name;
public String getName()
{
return name;
}
public void setName(String name) {
this.name = name;
}public class ExtraClass{
public static void main(String[] args) {Student[] student = new Student[2]; //此时如下调用会出现空指针异常 student[0].setName("李明"); //正确调用 Student s1= new Student(); student[0] = s1; student[0].setName("李明");
}
}
分析
- 数组类型是引用类型,此时 Student[] student = new Student【2】是引用类型执行动态初始化(不是静态初始化)后保存的(指针)是null值,即没有指向具体的数据存储的内存地址,就像数组里面没任何数据,你访问一个空数组当然会报出空指针异常。
- Student s1= new Student()执行对象初始化,对象初始化就会将对象的元素初始化为null,也就是说内存中已经有了对象的这些成员,只不过为null,那么你在为他赋值就正常了
此时将一个对象的指针放在数组里,你再去访问数组就没有问题了
因为java没有指针概念,把指针理解为内存首地址就可以了。
谢谢