空指针异常(NullPointerException)以及解决方案

news2024/9/23 17:24:38

之前我们提到过,在学习数组这一篇章时,有两种运行时异常,可能会反复的出现,首先第一个就是我们之前所讲述的,数组下标越界异常(ArrayIndexOutOfBoundsException),如需查看详情,可跳转:

数组下标越界异常(ArrayIndexOutOfBoundsException)以及解决方案_数组下标越界所有报错情况-CSDN博客

这篇文章,再有一个就是我们今天的主题,空指针异常 (NullPointerException)了。

它也是一个很经典的运行时异常,遇到这种情况,我们的程序确实会正常进行编译,但只要一运行,程序就会出现上图所示的报错,这就代表,我们的逻辑可能出现了错误,下面我们来看一下例子:

public class Temp {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int[][] nums = new int[3][] ;
        nums[2][0] = 10 ;
    }
}

在上面的代码中,我们创建了一个[3][]这样的数组,代表我们的变量nums中可以存入3个一维数组,但我们并没有为其赋初值。

此时,我们如果向nums[2][0](即第三个数组的第一个元素)赋值的话,我们会发现点击运行后,空指针异常就会出现了。

原因是,如果我们并没有对引用类型的变量做初始化处理的话,这个引用类型的变量的将会由虚拟机自动赋值为一个默认值null,代表什么都没有。

如果什么都没有,本身并不算错误,但如果什么都没有,还想要对其进行操作,虚拟机就会判定为异常了。

比如说一个教室中有三把椅子(三个数组),但只有前两把椅子上坐了同学(前两个已经赋值),第三把椅子没有人坐(第三个为默认值null)。

这是完全可以的,但此时,我非要说,第三把椅子那位同学,请你起立,(System.out.println(nums3[0]))这显然使没办法成立的,此时就会出现异常了。

因此,想要避免出现空指针异常,我们一般有两种做法,一就是对变量进行初始化,使每个位置的元素都有值,可以理解为,让全部的椅子上都有同学,这样我们可以对所有椅子上的同学进行对应的交流了。二就是不去操作其值为null的元素,即只对椅子上有的同学们进行交流。

现在,相信大家对空指针异常(NullPointerException),也能够有一个简单的认识,并具有一定的处理手段了,那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

tekton通过ceph挂载node_modules的时候报错failed to execute command: copying dir: symlink

分析: 如果ceph的mountPath和workingDir路径一致的话,就会报错。 解决:node_modules挂载到/workspace下,workingDir的代码mv到/workspace下进行构建。

Spring Boot和OCR构建车牌识别系统

​ 博客主页: 南来_北往 系列专栏:Spring Boot实战 OCR介绍 OCR(Optical Character Recognition)是光学字符识别技术的缩写,它能够将图像中的文本转换为机器可读和编辑的数字文本格式。这种技术广泛应用于数据输入、文档管理…

⼆叉树选择题

⼆叉树选择题 本篇文章是初阶二叉树的收尾,旨在进一步加深对于二叉树性质的理解,祝你有一个愉快的学习之旅! 💡 ⼆叉树性质 1)对任何⼀棵⼆叉树, 如果度为 0 其叶结点个数为 n0 , 度为 2 的分⽀结点个数为 n2 ,则有…

Unity | AmplifyShaderEditor插件基础(第二集:模版说明)

目录 一、前言 二、核心模版和URP模版 1.区别介绍 2.自己的模版 三、输出节点 1.界面 2.打开OutPut 3.ShderType 4.ShaderName 5.Shader大块内容 6.修改内容 四、预告 一、前言 内容全部基于以下链接基础以上讲的。 Unity | Shader基础知识(什么是shader…

JSON与EXL文件互转

功能:实现json到excel文件的相互转换(支持json多选版) 目的:编码与语言对应,方便大家使用 页面设计: 介绍: 1.选择文件栏目选择想要转换的文件 2.生成路径是转换后文件所在目录 3.小方框勾选与不勾选分别代表exl到…

Apache Doris 中Compaction问题分析和典型案例

说明 此文档主要说明一些常见compaction问题的排查思路和临时处理手段。这些问题包括 Compaction socre高Compaction失败compaction占用资源多Compaction core 如果问题紧急,可联系社区同学处理 如果阅读中有问题,可以反馈给社区同学。 1 compaction …

VulnHub:BlueMoon

准备工作 靶机下载地址,下载完成后使用virtualbox打开虚拟机,网络设置修改为桥接。 信息收集 主机发现 攻击机ip:192.168.31.218,nmap扫描攻击机同网段存活主机。 nmap 192.168.31.0/24 -Pn -T4 目标靶机ip为:192…

Docker最佳实践进阶(一):Dockerfile介绍使用

大家好,上一个系列我们使用docker安装了一系列的基础服务,但在实际开发过程中这样一个个的安装以及繁杂命令不仅仅浪费时间,更是容易遗忘,下面我们进行Docker的进阶教程,帮助我们更快速的部署和演示项目。 一、什么是…

免费抠图项目

零元部署一个产品落地页 最近花了点时间,为我之前写的AI抠图项目,写了个产品落地页,效果如下。 项目使用tailwindcss和vue3实现,支持主题切换、中英文切换等功能。 更多功能可以点击Matting Website查看。 部署这个页面几乎是0元…

Linux文件系统之RAID

文章目录 1、前言2、RAID特性简述3、RAID实现方式4、RAID级别①RAID-0②RAID-1③RAID-5④RAID-6⑤RAID-10和RAID-01 1、前言 RAID全称Redundant Arrays of Inexpensive Disks / Redundant Arrays of Independent Disks,即独立冗余磁盘阵列。RAID可以通过相关技术&a…

纷享销客CRM AI产品架构概览、产品特色

一、纷享销客CRM AI产品架构概览 纷享AI平台架构分为三个主要层次:AI基础设施层、AI平台层和AI应用层。每个层次都由一系列功能模块组成,旨在为客户提供强大的技术支持和灵活的解决方案。 1.Al基础设施层 AI基础设施层是整个AI平台的底层支撑&#xff…

Spark MLlib 特征工程(上)

文章目录 Spark MLlib 特征工程(上)特征工程预处理 Encoding:StringIndexer特征构建:VectorAssembler特征选择:ChiSqSelector归一化:MinMaxScaler模型训练总结Spark MLlib 特征工程(上) 前面我们一起构建了一个简单的线性回归模型,来预测美国爱荷华州的房价。从模型效果来…

【高等代数笔记】002.高等代数研究对象(二)

1. 高等代数的研究对象 1.4 一元高次方程的求根 a n x n a n − 1 x n − 1 . . . a 1 x a 0 0 a_{n}x^{n}a_{n-1}x^{n-1}...a_{1}xa_{0}0 an​xnan−1​xn−1...a1​xa0​0 等式左边是一元多项式。 所有一元多项式组成的集合称为一元多项式环。

在亚马逊云科技上安全、合规地创建AI大模型训练基础设施并开发AI应用服务

项目简介: 小李哥将继续每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿AI技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS AI最佳实践,并应用到自己的日常工作里。 本次介绍的是如何在亚马逊云科技利用Servi…

ARM架构(四)——异常中断和中断控制器(GIC)①

中断术语1——assert、routing、target、target to、target fromtaken 几个重要的概念:assert。routing、target、target to、target fromtaken 1.2 assert 外设发给GIC一个中断信号,GIC发给PE,PE对中断进行assert,断言这个中断是IRQ还是FI…

PPT怎么锁定图片不被移动?2个办公必备的实用技巧盘点!

插入到ppt的图片,怎么锁定不被移动?这是不少做PPT的人都会遇到的问题,想要移动的图片不会移动,不想移动的图片反而动了……诸如此类的迷之操作,直接把人整迷糊了。 ppt怎么锁定图片不被移动?就着这个问题&…

(贪心 + 双指针) LeetCode 455. 分发饼干

原题链接 一. 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j&…

【数学建模备赛】Ep03:皮尔逊person相关系数

文章目录 一、前言🚀🚀🚀二、皮尔逊person相关系数:☀️☀️☀️1. 总体皮尔逊person相关系数① 总体和样本② 理解协方差(受量纲影响)③ 剔除量纲影响 2. 样本皮尔逊person相关系数3. 相关性可视化① 皮尔…

后端代码练习1——加法计算器

1. 需求 输入两个整数&#xff0c;点击 “点击相加” 按钮&#xff0c;显示计算结果。 2.准备工作 创建Spring Boot项目&#xff0c;引入Spring Web依赖&#xff0c;把前端代码放入static目录下。 2.1 前端代码 <!DOCTYPE html> <html lang"en"> <h…

Unity + HybridCLR 从零开始

官方文档开始学习,快速上手 | HybridCLR (code-philosophy.com)是官方文档链接 1.建议使用2019.4.40、2020.3.26、 2021.3.0、2022.3.0 中任一版本至于其他2019-2022LTS版本可能出现打包失败情况 2. Windows Win下需要安装visual studio 2019或更高版本。安装时至少要包含 使…