您的位置:首页 > 编程语言 > Java开发

【java基础】引用类型数组初始化中,setter和getter函数空指针问题

2015-12-26 19:55 681 查看

【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没有指针概念,把指针理解为内存首地址就可以了。

谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息