Java中,有时候会不小心出现java.lang.NullPointerException。这篇文章主要介绍一些这个异常类型。
这个异常类型是什么?
先看一下下面的代码:
int x;
x = 10;
第一行声明一个int基本类型的变量,Java会将其初始化为0.也就是说,变量x的值就是0。第二行将10写入x所在的内存单元,因为是基本类型,所以即替换到原来的0. Ok,这一切都很顺利,没什么意外。但是,
当声明一个引用类型的变量时,变量中存放的不再是真正的值,而是一个引用,例如
Integer num;
num = new Integer(10);
声明语句中,我们声明了一个名为num的引用类型(
reference type)变量,这个变量包含的不是一个真正的值,而是一个指针(指针这个说法不实很准确,因为Java中,不想C C++中有指针的概念,而只有引用的概念)。但是我们没有说明它指向哪里,所以Java将其指向null,也就是说我这个变量不指向任何地方。第二行中,我们创建一个Integer类型的实例,并将其引用赋值给num,好了,现在num终于可以有所指了。于是可以通过这个指针来操作对象了( .运算)。
但是,如果我们声明一个变量(引用类型)之后的没有赋值语句就直接使用这个变量,如下:
Object obj = null;
System.out.println(obj.toString());
这是问题就来了,所以obj这个变量像无头苍蝇,不知道指向哪里。而你调用obj.toString()其实就是命令obj,给我执行toString()这个方法。天啊,我都不知道指向哪里,我怎么知道如何执行呢?也就是说,此时虚拟机找不到obj这个指针所指对象的toString代码,于是抛出NullPointerException异常。
什么情况下回出现NPE?
在sun的官方文档上,列出了几种抛出NPE的情况:
-
Calling the instance method of a
null
object
- Accessing or modifying the field of a
null
object.
- Taking the length of
null
as
if it were an array.
- Accessing or
modifying the slots of
null
as if it were an array
- Throwing
null
as
if it were aThrowable
value.
参考:
1. StackOverflow上的一个讨论:
2. 几篇博文:
分享到:
相关推荐
标题中的"NPE.rar"指的是一个使用MATLAB编程语言实现的NPE(Non-Photorealistic Rendering,非真实感渲染)的代码压缩包。NPE是一种计算机图形学技术,它允许艺术家和开发者创建出具有绘画风格或者模拟特定艺术媒介...
《流型学习在人脸识别中的应用——以NPE算法为例》 人脸识别技术,作为生物特征识别领域的重要组成部分,近年来发展迅速,广泛应用于安全监控、身份验证等多个领域。在这些技术中,流型学习(Manifold Learning)是...
亲测可以正常运行的邻域保持嵌入算法NPE的程序,欢迎大家下载。
因此,降维技术应运而生,其中ISOPAM(Isometric Feature Mapping)、LLE(Locally Linear Embedding)和NPE(Nonlinear Projection Estimation)是三种常用的流形学习降维方法。 1. ISOPAM(Isometric Feature ...
TonPE_XP_V1.9.4通用PE
标题中的“npe.rar_npe”可能是指与NPE(Network Processing Element)相关的RAR压缩文件,这通常在处理网络数据流或协议解析时使用。NPE是某些硬件平台中的一个组件,负责处理网络相关的计算任务,提高系统效率。在...
系统维护工具 最新PE工具(TonPE)v3.3 --教你如何制作.doc
在机器学习和数据分析领域,邻域保持嵌入(Neighborhood Preserving Embedding,简称NPE)是一种有效的非线性降维技术。NPE的核心思想是将高维数据映射到低维空间,同时尽可能地保持原始数据点之间的相对距离关系,...
**NPE:邻域保持嵌入** NPE(Neighborhood Preserving Embedding,邻域保持嵌入)是一种非线性降维技术,主要用于高维数据的可视化和分析。该方法旨在保留原始数据集中的局部结构,使在低维空间中的数据点依然能够...
锐捷NPE50系列网络出口引擎的介绍
传统的近邻保持嵌入(NPE)算法采用欧氏距离作为近邻点选取的度量,但欧氏距离只表示两点间的直线距离,在高维空间中不一定能反映数据间的真实空间分布,易导致近邻选取不准确。针对此问题,提出了相关近邻NPE(CNPE...
邻域保持嵌入(Neighborhood Preserving Embedding, NPE)是一种非线性降维方法,旨在保留数据集的局部结构。NPE通过寻找低维空间中的映射,使得高维数据的邻域关系在低维空间中尽可能保持不变。然而,NPE算法存在两...
功能强大,不被这个软件认同的,御卸。按需下载,
RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册
诺顿神奇NPE,在别的杀软查不出毒的时候试试他把
winPE制作工具,简单操作,打开之后第一步:选择U盘,第二步:选上两个复选框,下一步。第三步:弹出对话框,点击...开机可以选则从U盘启动。一般联想电脑是F12 ,HP电脑是F9,有些是F2的。有些需要按ESC然后才能选。
根据提供的文件信息,本文将详细解析《RG-NPE系列出口网关RGOS 10.3(4b10)版本配置手册(V2.0)》中的关键知识点,特别是围绕标题和描述中提及的核心内容。 ### RG-NPE系列出口网关RGOS 10.3(4b10)版本配置手册 ####...
【标题】"TonPE XP PE系统启动" 是一个专门针对Windows XP操作系统的可启动便携式环境(PE)工具,它允许用户在不依赖现有操作系统的情况下进行系统维护、修复或重装。这种工具通常用于电脑遇到问题无法正常启动时,...
### 全球NPE知识产权风险及我国应对策略 #### 一、引言 近年来,受全球新冠肺炎疫情的影响,知识产权的价值化成为了许多企业抵御经济风险的重要手段。非专利实体(NPEs)活动变得越来越频繁,尤其是在信息通信技术...