【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没有指针概念,把指针理解为内存首地址就可以了。
谢谢
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树