什么是空指针异常

article/2025/9/25 17:11:30

日常开发过程中,最常见的异常莫过于NullPointerException,之前的时候,只是知道去找到报错的位置,然后去解决它,最近有空学习C语言,就去深究了下NullPointerException异常的本质。

发生NullPointerException的情况:

调用 null 对象的实例方法。
访问或修改 null 对象的字段。
如果一个数组为null,试图用属性length获得其长度时。
如果一个数组为null,试图访问或修改其中某个元素时。
在需要抛出一个异常对象,而该对象为 null 时。

首先,我们先找到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);}}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

NullPointerException翻译过来便是空指针,接下来我们首先要了解的是什么是指针,对于非C/C++的程序员来说,很多其它语言开发者对指针的概念很模糊,说白了,指针就是存储变量的内存地址,在C语言里面,NULL表示该指针不指向任何内存单元,0表示指向地址为0的单元(这个单元一般是不能使用的)。先看一段C语言代码:

void main() {int* i = NULL;printf("%#x\n", i);printf("%#x\n", &i);system("pause");
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

null

在C语言里,你可以读取NULL本身的值(void *)0,即0,但是读取它指向的值,那是非法的,会引发段错误。而Java里面的NULL就是直接指向了0,上述也说了,指向地址为0的单元,一般是不能使用的。

一句话总结:因为指向了不可使用的内存单元,虚拟机无法读取它的值,最终导致NullPointerException。

http://blog.csdn.net/pangpang123654/article/details/52370669


http://chatgpt.dhexx.cn/article/yvSM3Y2M.shtml

相关文章

空指针异常的原因分析

空指针异常的原因分析: 1.当一个对象不存在时又调用其方法会产生异常obj.method() // obj对象不存在 2. 调用空对象的方法时就会抛出 NullPointerException 空指针异常 (对象自己new 或是spring管理的要加Autowired注解) 3.如果该对象是由spring容器进行依赖注入(DI…

如何有效的避免空指针异常

空指针异常如何避免,听听老司机分享一些条件反射式的使用经验。 | 喜欢听我叨叨的,直接看视频 | 01 开篇 空指针异常在新手程序员里面非常常见,不只是新手,所有初级、中级甚至是高级都不可避免。 本期主题的由来是因为有这样一位…

关于Integer的空指针异常

关于Integer的空指针异常 问题来源 当用Integer来接收数据后,需要将数据与0进行比较,看是不是0,但是如果Integer接收的数据是null的时候,就会报空指针异常。 public static void main(String[] args) {Integer a null;System.…

如何解决空指针异常

NPE异常相信 Java 程序员都很熟悉,是 NullPointerException 的缩写;最近业务需求开发的有点着急,测试环境就时不时的来个NPE异常,特别的头疼;作为出镜率最高的异常之一,一旦入行Java开发,可以说…

Java 空指针异常的若干解决方案

Java 中任何对象都有可能为空,当我们调用空对象的方法时就会抛出 NullPointerException 空指针异常,这是一种非常常见的错误类型。我们可以使用若干种方法来避免产生这类异常,使得我们的代码更为健壮。本文将列举这些解决方案,包括…

NullPointerException(空指针异常)

NullPointerException(空指针异常)对象为Null还拿来使用,就会出现此异常。 多的不说少的不聊,直接上代码!!! public class Main {public static void main(String[] args) {String str1 "";String str2 n…

Java中的空指针异常

Java中的空指针异常 一、什么是空指针异常? 1.1 异常的分类 NullPointerException是RuntimeException的一个子类,这是运行时异常,在编译时期不会触发。 1.2 空指针异常引入 Java是没有指针的,所以我们常说"Java 指针&quo…

PageRank算法介绍

互联网上有数百亿个网页,可以分为这么几类:不含有用信息的,比如垃圾邮件;少数人比较感兴趣的,但范围不是很广的,比如个人博客、婚礼公告或家庭像册;很多人感兴趣的并且十分有用的,比…

PageRank 算法(从原理到实现)

spark 系列 Spark 核心原理及运行架构 Spark RDD详解 Spark 常用算子大全 Spark SQL 详解 Spark GraphX 图计算入门基础 Spark PageRank 算法——从原理到实现 Spark PageRank spark 系列前言算法来源算法原理排名泄露排名下沉排名上升算法证明 PR值计算方法幂迭代法特征…

浅谈PageRank算法

TOC[目录] PageRank 是 由佩奇(Larry Page)等人提出 的 Google 最为有名的技术之一 PageRank 是一种基于随机游走 的 评价网站权值的算法 总之, PageRank 是一种十分重要的算法 不管在学术界 还是在产业界 Node Similarity(节点相似度) 假设在一个图G(V,E)中研究两…

PageRank算法 到 textRank

1. PageRank算法概述 PageRank,即网页排名,又称网页级别、Google左侧排名或佩奇排名。 是Google创始人拉里佩奇和谢尔盖布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该 算法也成为其他搜索引…

PageRank算法浅析

转载请注明出处!!!http://blog.csdn.net/zhonghuan1992 本文是根据 Topic-Sensitive PageRank Google’s PageRank:The Math Behind the Search Engine http://blog.csdn.net/hguisu/article/details/7996185 http://blog.codinglabs.…

PageRank 算法详解

转载自:https://blog.csdn.net/m0_37786726/article/details/79864012 参考文献:https://blog.csdn.net/androidlushangderen/article/details/43311943 链接分析 在链接分析中有2个经典的算法,1个是PageRank算法,还有1个是HITS…

数据挖掘十大算法:PageRank算法原理及实现

一、PageRank的概念 PageRank,网页排名, 是一种由根据网页之间相互的超链接计算的技术,而作为网页排名的要素之一, 它由Larry Page 和 Sergey Brin在20世纪90年代后期发明,并以拉里佩吉(Larry Page&#xf…

PageRank 算法及实例分析

本文一部分是针对图的PageRank 的实现,以及具体数据集的分析过程的记录。 另一部分是BFS的实现,并记录每一层的节点数。 数据集下载地址 soc-Slashdot0811 、 roadNet-CA 、 soc-LiveJournal1 1. java 实现代码 Main.java import java.util.List;pu…

PageRank算法(二)

原文地址:https://blog.csdn.net/monkey_d_meng/article/details/6556295 说明:这是我学习过程中看到对PageRank来龙去脉解释非常清晰的博客,博主很厉害,大家可以关注一下原创作者! 一、PageRank算法的简单举例 Goo…

PageRank 算法实现

大数据管理与分析实验报告 实验一 大数据系统基本实验 实验二 文档倒排索引算法实现 实验三 PageRank 算法实现 实验目的 PageRank 网页排名的算法,曾是Google 发家致富的法宝。用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。通过对PageRank 的…

(简单介绍)PageRank算法

文章目录 前言引入形式化PageRank 前言 这个是一个经典算法,还是有必要了解的,这里由于讲得不会很详细,所以要求你有一点数学知识,如果有,看完这篇就大概明白PageRank是个啥了。本篇不涉及证明之类的,而是…

算法--PageRank

概念 PageRank是Google提出的算法,用于衡量特定网页相对于搜索引擎索引中的其他网页而言的重要程度。是Google创始人拉里佩奇和谢尔盖布林于1997年创造的PageRank实现了将链接价值概念作为排名因素。 GOOGLE PageRank并不是唯一的链接相关的排名算法,而…

pagerank以及个性化的pagerank算法

pagerank以及个性化的pagerank算法 pagerank最开始是Google提出来用来衡量网页重要度排行的算法。 她的思想是基于网页之间互相的链接作为加权投票。假如网页a指向b, 那么网页b的重要程度受网页a的影响,a越重要,则b就越重要。假如网页c也指…