时间:2021-05-19
java 出现NullPointerException的原因及解决办法
日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。
发生NullPointerException的情况:
首先,我们先找到Java.lang.NullPointerException这个类,内容很简单:
package java.lang;/** * Thrown when a program tries to access a field or method of an object or an * element of an array when there is no instance or array to use, that is if the * object or array points to {@code null}. It also occurs in some other, less * obvious circumstances, like a {@code throw e} statement where the {@link * Throwable} reference is {@code null}. */public class NullPointerException extends RuntimeException { private static final long serialVersionUID = 5162710183389028792L; /** * Constructs a new {@code NullPointerException} that includes the current * stack trace. */ public NullPointerException() { } /** * Constructs a new {@code NullPointerException} with the current stack * trace and the specified detail message. * * @param detailMessage * the detail message for this exception. */ public NullPointerException(String detailMessage) { super(detailMessage); }}NullPointerException翻译过来便是空指针,接下来我们首先要了解的是什么是指针,对于非C/C++的程序员来说,很多其它语言开发者对指针的概念很模糊,说白了,指针就是存储变量的内存地址,在c语言里面,NULL表示该指针不指向任何内存单元,0表示指向地址为0的单元(这个单元一般是不能使用的)。先看一段C语言代码:
void main() { int* i = NULL; printf("%#x\n", i); printf("%#x\n", &i); system("pause");}在C语言里,你可以读取NULL本身的值(void *)0,即0,但是读取它指向的值,那是非法的,会引发段错误。而Java里面的NULL就是直接指向了0,上述也说了,指向地址为0的单元,一般是不能使用的。
一句话总结:因为指向了不可使用的内存单元,虚拟机无法读取它的值,最终导致NullPointerException。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Android中读取SD卡文件时抛出NullPointerException错误解决办法相关源码:packagecom.example.musicplayer;
AndroidCausedby:java.lang.ClassNotFoundException解决办法出现问题:08-1318:29:22.924:E/And
Eclipse开发java出现FailedtocreatetheJavaVirtualMachine错误解决办法一直用Eclipse开发Java,突然有这么一天
问题:没错就这样的,出现这种原因是IDEA没有识别到文件解决办法:File>>projectstructure>>Modules把Java标成sources,相
小盒学生登录不了的原因及解决方法如下: 1、平台系统正在升级,这时会登录不上,解决办法:只要稍后再重新登录下。 2、平台APP加载有故障,解决办法:需要卸载