`
0428loveyu
  • 浏览: 30911 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

NullPoinerException(NPE)

 
阅读更多

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 anullobject
  • Accessing or modifying the field of anullobject.
  • Taking the length ofnullas if it were an array.
  • Accessing or modifying the slots ofnullas if it were an array
  • Throwingnullas if it were aThrowablevalue.


参考:

1. StackOverflow上的一个讨论:

2. 几篇博文:





分享到:
评论

相关推荐

    NPE.rar_MATLAB实现NPE_NPE matlab_npe

    标题中的"NPE.rar"指的是一个使用MATLAB编程语言实现的NPE(Non-Photorealistic Rendering,非真实感渲染)的代码压缩包。NPE是一种计算机图形学技术,它允许艺术家和开发者创建出具有绘画风格或者模拟特定艺术媒介...

    NPE.rar_NPE人脸识别_人脸 数据集_流型_流型人脸识别_流型识别

    《流型学习在人脸识别中的应用——以NPE算法为例》 人脸识别技术,作为生物特征识别领域的重要组成部分,近年来发展迅速,广泛应用于安全监控、身份验证等多个领域。在这些技术中,流型学习(Manifold Learning)是...

    npe.m.rar_Matlab代码_npe_npe.m

    亲测可以正常运行的邻域保持嵌入算法NPE的程序,欢迎大家下载。

    ISOPAM LLE,NPE等降维算法

    因此,降维技术应运而生,其中ISOPAM(Isometric Feature Mapping)、LLE(Locally Linear Embedding)和NPE(Nonlinear Projection Estimation)是三种常用的流形学习降维方法。 1. ISOPAM(Isometric Feature ...

    TonPE_XP_V1.9.4通用PE

    TonPE_XP_V1.9.4通用PE

    npe.rar_npe

    标题中的“npe.rar_npe”可能是指与NPE(Network Processing Element)相关的RAR压缩文件,这通常在处理网络数据流或协议解析时使用。NPE是某些硬件平台中的一个组件,负责处理网络相关的计算任务,提高系统效率。在...

    最新PE工具(TonPE)v3.3 --教你如何制作.

    系统维护工具 最新PE工具(TonPE)v3.3 --教你如何制作.doc

    NPE_npe_dataembedding_

    在机器学习和数据分析领域,邻域保持嵌入(Neighborhood Preserving Embedding,简称NPE)是一种有效的非线性降维技术。NPE的核心思想是将高维数据映射到低维空间,同时尽可能地保持原始数据点之间的相对距离关系,...

    NPE.rar_npe

    **NPE:邻域保持嵌入** NPE(Neighborhood Preserving Embedding,邻域保持嵌入)是一种非线性降维技术,主要用于高维数据的可视化和分析。该方法旨在保留原始数据集中的局部结构,使在低维空间中的数据点依然能够...

    锐捷NPE50系列网络出口引擎

    锐捷NPE50系列网络出口引擎的介绍

    论文研究-相关NPE算法的人脸识别研究.pdf

    传统的近邻保持嵌入(NPE)算法采用欧氏距离作为近邻点选取的度量,但欧氏距离只表示两点间的直线距离,在高维空间中不一定能反映数据间的真实空间分布,易导致近邻选取不准确。针对此问题,提出了相关近邻NPE(CNPE...

    基于NPE改进算法的人脸识别.pdf

    邻域保持嵌入(Neighborhood Preserving Embedding, NPE)是一种非线性降维方法,旨在保留数据集的局部结构。NPE通过寻找低维空间中的映射,使得高维数据的邻域关系在低维空间中尽可能保持不变。然而,NPE算法存在两...

    电脑防护软件npe

    功能强大,不被这个软件认同的,御卸。按需下载,

    RG-NPE50系列路由器RGNOS10.3版本命令手册

    RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册RG-NPE50系列路由器RGNOS10.3版本命令手册

    诺顿神奇NPE

    诺顿神奇NPE,在别的杀软查不出毒的时候试试他把

    U盘工具TonPE_1.9

    winPE制作工具,简单操作,打开之后第一步:选择U盘,第二步:选上两个复选框,下一步。第三步:弹出对话框,点击...开机可以选则从U盘启动。一般联想电脑是F12 ,HP电脑是F9,有些是F2的。有些需要按ESC然后才能选。

    RG-NPE系列出口网关RGOS 10.3(4b10)版本配置手册(V2.0)

    根据提供的文件信息,本文将详细解析《RG-NPE系列出口网关RGOS 10.3(4b10)版本配置手册(V2.0)》中的关键知识点,特别是围绕标题和描述中提及的核心内容。 ### RG-NPE系列出口网关RGOS 10.3(4b10)版本配置手册 ####...

    TonPE XP PE系统启动

    【标题】"TonPE XP PE系统启动" 是一个专门针对Windows XP操作系统的可启动便携式环境(PE)工具,它允许用户在不依赖现有操作系统的情况下进行系统维护、修复或重装。这种工具通常用于电脑遇到问题无法正常启动时,...

    全球NPE知识产权风险及我国应对策略.docx

    ### 全球NPE知识产权风险及我国应对策略 #### 一、引言 近年来,受全球新冠肺炎疫情的影响,知识产权的价值化成为了许多企业抵御经济风险的重要手段。非专利实体(NPEs)活动变得越来越频繁,尤其是在信息通信技术...

Global site tag (gtag.js) - Google Analytics