空指针异常
程序员文章站
2022-03-23 22:14:18
空指针异常是指空的引用去访问实例变量会出现异常。class Date{int year;int month;int day;public Date(int year1,int month1,int day1){year = year1;month = month1;day = day1;}}public class DateTest{public static void main(String[] args){Date time = new Date(2...
空指针异常是指空的引用去访问实例变量会出现异常。比如有如下代码:
class Date{
int year;
int month;
int day;
public Date(int year1,int month1,int day1){
year = year1;
month = month1;
day = day1;
}
}
public class DateTest{
public static void main(String[] args){
Date time = new Date(2020,7,29);
System.out.println("year = " + time.year);
System.out.println("month = " + time.month);
System.out.println("day = " + time.day);
}
}
上述程序的内存图如下所示:
当引用为空,即 time = null 时,代码如下:
class Date{
int year;
int month;
int day;
public Date(int year1,int month1,int day1){
year = year1;
month = month1;
day = day1;
}
}
public class DateTest{
public static void main(String[] args){
Date time = new Date(2020,7,29);
System.out.println("year = " + time.year);
System.out.println("month = " + time.month);
System.out.println("day = " + time.day);
**time = null;**//新增代码引用为空
**System.out.println("year = " + time.year);
System.out.println("month = " + time.month);
System.out.println("day = " + time.day);**
}
}
执行结果如下:
可以看到,编译阶段是可以通过的,因为引用time属于Date类,在Date类中有year,month,day属性,所以编译器允许通过time引用去访问Date属性。但是程序在运行阶段,在运行后会显示java.lang.NullPointerException,也就是空指针异常。此时的内存图如下所示:
这是因为当执行time = null后,引用time不再保存对象的地址,也就是说,引用time找不到对象了,对于程序来说这个时候就没有办法正常访问了,这种状况就是所谓的空指针异常。简单的说的话,就是引用找不到对象所以发生异常。
本文地址:https://blog.csdn.net/weixin_43797245/article/details/107681043
上一篇: NullPointerException: Attempt to invoke virtual method ‘android.content.res.XmlResourceParser androi
下一篇: java动态修改Timer执行频率
推荐阅读
-
Json解析异常Value of type java.lang.String cannot be converted to JSONObject
-
Android WindowManager$BadTokenException异常应对案例
-
MySQL抛出Incorrect string value异常分析
-
python 异常处理总结
-
30分钟学会C/C++指针 (二)
-
Java抛出异常与自定义异常类应用示例
-
IOS 中UITextField和UITextView中字符串为空和空格的解决办法
-
详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法
-
详解log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
-
asp.net开发中常见公共捕获异常方式总结(附源码)