NullPointerException异常

顾名思义,NullPointerException是空指针异常。但是在Java中没有指针,怎么会有空指针异常呢?

在C++中,声明的指针需要指向一个实例(通过new方法构造),这个指针可以理解为地址。

在Java中,虽然没有指针,但是有引用(通常称为对象引用,一般直接说对象),引用也是要指向一个实例对象(通过new方法构造)的,从这种意义上说,Java中的引用与C++中的指针没有本质的区别,不同的是,处于安全的目的,在Java中不能对引用进行操作,而在C++中可以直接进行指针的运算,例如book++等。

所以这里的NullPointerException虽然不是真正的空指针异常,但本质上差不多,是因为引用没有指向具体的实例,所以当访问这个引用的方法的时候就会产生这种异常。例如下面的代码:

String str = "这是一个测试用的字符串!";

System.out.println(str.length());

这段代码没有问题,但是如果改成下面的代码:

String str ;

System.out.println(str.length());

就会产生NullPointerException异常了,当然一般人不会犯这样低级的错误。

那这种异常通常是如何产生的呢?比较多见的是下面的两种情况:

1、把调用某个方法的返回值直接赋值给某个引用,然后调用这个引用的方法。在这种情况下,如果返回的值是null,必然会产生NullPointerException异常。例如:

String userName=request.getParameter("userName");

if(userName.length()==0)

......

else

......

如果request.getParameter("userName")的结果为null,则这里就会产生这种异常。

2、在方法体中调用参数的方法。这种情况下,如果调用方法的时候传递进来的值是null,也要产生NullPointerException异常。

要解决这种异常,只需要检查异常出现在第几行(通常在集成开发环境中会提示用户错误发生在第几行),然后查看调用了哪个对象的方法,然后检查这个对象为什么没有赋值成功即可。

要避免程序产生这种异常,比较好的解决方法是在调用某个对象的方法时候判断这个对象是否可能为空,如果可能,则增加判断的语句,例如上面的代码可以写成:

if(str!=null)

System.out.println(str.length());

else

System.out.println(0);

图神经网络实战(25)——基于A3T-GCN预测交通流量 本节重点讨论了使用 TGNN 进行交通预测任务。首先,我们介绍了 PeMS-M 数据集,并将其从表格数据转换为具有时间信号的静态图数据集。在实践中,我们根据输入距离矩阵创建了加权邻接矩阵,并将交通速度转换为时间序列。最后,我们构建了 A3T-GCN 模型,这是一个专为交通预测设计的 T-GNN 模型,并将结果与两个基线模型进行了比较,验证了模型的预测结果。 阅读详情

相关推荐

3DMax马克杯制作教程

01 在前视图创建一个【圆柱体】,设置参数,长度为32,高度为82;高度分段12、边数为16;如图所示。 02 点击鼠标右键,把圆柱体转换为可编辑多边形,如图所示。 03 在修改面板中,选择【多边形】层级,在视图中选择所示的面,使用缩放工具稍微缩小一点,如图所示。 04 点击【插入设置】,如图所示。 设置插入数量为2.5mm。 05 点击【挤出设置】,如图所示。 ...

youximoxingEDO的博客 3479

5月踩过的一些坑

编码过程中常见的一些错误

白T 305

基于STM32的多模态智能风扇控制系统设计与实现

本文详细介绍了基于STM32单片机的多模态智能风扇控制系统的设计与实现。系统集成了红外遥控、蓝牙手机控制及人体感应等多模态交互方式,通过PWM技术实现无级调速,并设计了安全优先的控制逻辑。文章从硬件选型、核心原理、软件编程到系统调试,提供了完整的实战指南,适合嵌入式开发爱好者学习与实践。

weixin_28285943的博客 238

DBeaver如何查看ER图——DBeaver笔记

DBeaver查看ER图

weixin_42128648的博客 1962

在VSCode中使用LaTex+(grammarly语法检测,chatgpt翻译,Sumatra PDF 轻量级pdf阅读器)

整个文章分为以下几个内容,打 * 的是必须要安装的。

u011895157的博客 2万+

Zoom AI 技术架构研究:联合式方法与多模态集成

通过 Zoom AI 开放平台,企业可以自定义 AI 模块 (如法律合规审查、客户反馈分析),扩展应用场景。这种开放平台策略使企业能够根据自身需求定制 AI 功能,满足特定业务需求。

shao.bing的专栏 1318

Java常见的十种“运行时异常”

下标越界",现在程序中大多都有对数组的操作,因此在调用数组的时候一定要认真检查,看自己调用的下标是不是超出了数组的范围,一般来说,显示(即直接用常数当下标)调用不太容易出这样的错,但隐式(即用变量表示下标)调用就经常出错了.",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等。当应用试图调用某类的某个方法,而该类的定义中没有该方法的定义时抛出该错误。这个异常的解释是"程序遇上了空指针","...

nick665544的博客 1万+

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置1.打开ESXI的SSH2.找到不能添加的硬盘路径3.用SSH操作 1.打开ESXI的SSH 2.找到不能添加的硬盘路径 我的是第一个,找到你要添加但是不能添加的那个硬盘,点进去。 完整的路劲为:1/2 比如我的: /vmfs/devices/disks/t10.ATA_____ST500LT0122D1DG142___________________________________S3PHRNHQ (比较长哈!) 3.用SSH

AI_DOG的博客 2万+

NullPointerException异常的原因及java异常

NullPointerException异常的原因及java异常??1.空指针异常1.1空指针异常原因2.java异常2.1异常机制概述2.2异常处理的流程2.3异常的结构2.4Error异常2.5RuntimeException异常2.6Checked Exception异常2.7在声明方法时候抛出异常2.8在方法中如何抛出异常2.9为什么要创建自己的异常?2.10throw和throws的区别2.11**应该在声明方法抛出异常还是在方法中捕获异常?**2.12**使用finally块释放资源**2.13

m0_49976286的博客 8977

Linux PE vs WinPE:为何麒麟系统修复需要专属工具?

本文探讨了Linux PE与WinPE在修复国产麒麟系统时的关键差异,强调了专属工具的必要性。通过分析文件系统兼容性、引导修复、硬件适配和安全合规等方面,揭示了通用PE工具的局限性,并提供了构建专属修复工具链的实用方案,确保系统维护的高效与安全。

weixin_29290863的博客 1063

100天精通Python(爬虫篇)——第119天:基于selenium实现隐藏浏览器指纹特征(反反爬策略)

1. 什么是浏览器指纹? 2. 爬虫隐藏浏览器指纹特征的好处? 3. 手动打开浏览器指纹情况 4. 无界面模式打开浏览器 5. 脚本隐藏浏览器指纹特征

努力让自己发光,对的人才能迎着光而来 8万+

异常-NullPointerException

NullPointerException异常的原因基本语句方法参数方法返回解决放案 基本语句 object.equals("10086");//object可能null list.size();// list可能null map.get("key").toString();//map和"key"对应的值都可能null Student student = dao.get(id); boolean isXiaoMing = student.getName().equals("小明");// student

a8590455的博客 243

24、水下传感器网络中混合LEACH协议与遗传算法获取路由节点

本文提出了一种结合遗传算法与LEACH协议的混合路由方案,用于提升水下无线传感器网络(UWSN)的能量利用效率和数据传输稳定性。通过遗传算法优化簇头选择与路径规划,有效避免节点过早死亡,减少能量消耗,在200个节点场景下显著提升网络寿命。相比传统LEACH协议,该方案具有更高的能量利用率、更强的环境适应性,并支持传输历史记录与并行传输序列。实验结果显示,该方案在总能量为2000焦耳时剩余能量达75.6%,远优于LEACH的34.8%能耗表现。适用于海洋监测、石油平台监控及水下灾害预警等复杂环境应用。

i8j9k0l1的博客 112

java中常见的NullPointerException异常

下面列出了我们学习java时常出现的NullPointerException异常,以及它的解决办法 1,空指针错误 java.lang.NullPointerException 使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便不能通过编译,因此使用基本的JAVA数据类型    (double,float,boolean,char,int,long)一般不会

学习学习 1926

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

NullPointerException空指针异常

在所有的RuntimeException异常中,Java程序员最熟悉的恐怕就是NullPointerException了。 NullPointerException即空指针异常,俗称NPE。如果一个对象为null,调用其方法或访问其字段就会产生NullPointerException,这个异常通常是由JVM抛出的, 参考:https://www.liaoxuefeng.com/wiki/1252599548343744/1337645544243233 所谓空指针异常,是因为用空(null)去调用属性或方法

wj1298250240的博客 9922

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

异常处理——NullPointerException

NullPointerException即空指针异常,俗称NPE。如果一个对象为null,调用其方法或访问其字段就会产生NullPointerException,这个异常通常是由JVM抛出的,例如: public class Main { public static void main(String[] args) { String s = null; System.out.println(s.toLowerCase()); } } 指针这个概念实际上源自C

weixin_46722612的博客 1970

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring容器中遇到的NullPointerException异常

今天遇到了一个NullPointerException,报错的代码行如下: List<User> list =adminService.searchByObjectId(objectId); 报错信息如下: java.lang.NullPointerException at net.gddx.door.service.Sample.messageArrived(Sample...

cc_梅 2956

深入探讨Java中的NullPointerException异常

通过本文的深入探讨,我们了解了NullPointerException异常的定义、产生原因、调试与排查方法、避免异常的最佳实践、异常处理与捕获策略以及常见场景与案例分析等内容。NullPointerException异常在Java开发中非常普遍,对程序的稳定性和可靠性带来很大的挑战。通过深入理解和掌握NullPointerException异常,我们可以更好地处理这一异常,提高程序的稳定性和可靠性。在未来的Java开发中,我们希望能够看到对NullPointerException异常的改进和优化。

博客 4904

NullPointerException异常的原因

NullPointerException异常的原因??     所谓空指针异常,是因为用空(null)去调用属性或方法。   null表示没有这个对象,既然没有这个对象,那么去调用他的属性和方法,就会报异常。     1、使用了未初始化的变量(虽然已经声明)   2、使用了未初始化的对象(虽然已经声明)   3、使用了关键字或已存在的类名作变量对象方法或类名。   当应用程序试图在

同是IT打拼人! 657

java 空指针异常_java NullPointerException异常处理

java语言与其他编程语言不同,它有严格的异常处理机制,如果需要抛出异常的代码块中没有捕获异常,程序将不会成功编译,换言之:未使用异常捕获、异常捕获方式不正确等,都将导致代码不能被jvm编译。java标准库,内建了大量的异常处理类,这些类以Throwable 设计为最顶层类。常见的java异常类有:IOException, SocketTimeoutException, UnknownHostEx...

weixin_31363631的博客 577

空指针异常NullPointerException(小结)

通俗地说:空指针异常,就是一个指针是空指针,你还要去操作它,既然它指向的是空对象,它就不能使用这个对象的方法。比如上面的s假如为null,你还要用s的方法,比如s.equals( String x);那么就会产生空指针异常。 (1)当一个对象不存在时又调用其方法会产生异常 obj.method()//obj对象不存在 (2)当访问或修改一个对象不存在的字段时会产生异常 obj.method()//method方法不存在 ...

Baymax_wyl的博客 7159

NullPointerException 没有打印异常栈

今天在排查一个java.lang.NullPointerException 的问题的时候发现,这个异常抛出竟然没有详细的堆栈信息: 如下: message: error: java.lang.NullPointerException: null 查看这个空指针的错误数量,从16号开始到23号,有100多w,如下: 但是这样没有堆栈信息,对于排查错误很不友好。 通过查询知道这个是HotSpot VM的优化,叫做fast throw:有些特定的隐式异常类型(NullPointerException之类)如

小小码农 2100

java中NullPointerException异常

关于报错 *Cannot load from int array because "arr" is null at notes.continuenotes.main(continuenotes.java:12)* 变量值为空:空指针异常:NullPointerException 案例代码如下: package notes; public class continuenotes { public static void main(String[] args) { // TODO Auto-gen

Blue54的博客 1520
上一篇: JSP中404错误的解决
下一篇: response.sendRedirect方式的转向与RequestDispatcher的forward方法的比较
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值