到底什么是空指针?如何避免空指针_01

在这里插入图片描述

文章目录

            • 1. 场景案例
            • 2. 针对于空指针的场景,有哪些方式可以避免问题

1. 场景案例
package com.gblfy;import org.springframework.beans.factory.annotation.Autowired;import javax.servlet.http.HttpServletRequest;/*** 理解什么是空指针*/
public class WhatIsnpe {@Autowiredprivate HttpServletRequest request;//定义一个User对象public static class User {private String name;private String[] address;public void print() {System.out.println("this is User class!");}public String readBook() {System.out.println("this is readBook method!");return null;}}//定义一个自定义异常public class CustomException extends RuntimeException {}public static void main(String[] args) {
//        第1种场景:调用空对象的实例方法User user=null;user.print();//        第2种场景:访问了空对象的属性
//        User user=null;
//        System.out.println(user.name);//        第3种场景:当数组是一个空对象的时候,取它的长度
//        User user = new User();
//        System.out.println(user.address.length);//        第4种场景:null 当做Throwable 的值
//        CustomException exception=null;
//        throw exception;//        第5种场景:方法的返回值是 null,调用方直接去使用
//        User user = new User();
//        System.out.println(user.readBook().contains("mysql"));}
}
      //    由于疏忽造成空指针问题//1.直接打印的时候System.out.println(request.getParameter("username"));//修改成if (request.getParameter("username")){System.out.println(request.getParameter("username"));}else {throw exception;}//2.给对象重新赋值又调用User user = new User();Tools tools = new Tools();//这里getUser()方法有可能返回值是null  最简单直接return null即可user= tools.getUser();user.print();//修改成user= tools.getUser()==null?new User():tools.getUser();
2. 针对于空指针的场景,有哪些方式可以避免问题

使用之前一定要下初始化,或者检查是否初始化
尽量避免在函数中返回NULL,或给出详细的注释(良好的编程习惯)
外部传值,除非有明确的的说明(非NULL),否则,一定要及时判断

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

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

相关文章

在 IntelliJ IDEA 中部署应用到服务器(Eclipse)

在之前的文章《在 Intellij IDEA 中部署 Java 应用到 阿里云 ECS》中讲解了如何将一个本地应用部署到阿里云 ECS 上去,有些读者反馈目前还有一些测试机器是在经典网络,甚至是在本地机房中,咨询是否可以通过 Cloud Toolkit 插件将应用部署到这…

linux所有文件打包压缩,Linux基础教程:对文件打包压缩

一、须知文件数量太多, 如果需要拷来拷去是不是很麻烦? 怎么办? 打包!文件太大,通过网络下载、传输会不会很费时间? 怎么办? 压缩!在Linux环境中,打包压缩文件的…

钉钉平台助力中国一汽疫情防控 数字化迈入新阶段

面对突如其来的疫情,中国一汽紧急应对、快速响应,携旗下一汽-大众、一汽丰田捐赠资金8100万元,并成立了疫情防控专项基金。同时,通过旗下“一汽出行”公司组织 “特别爱心车队”,在抗击疫情期间,提供安全、…

自动拆箱引发的空指针_02

文章目录1. 场景案例2. 规避自动拆箱引发的空指针的建议1. 场景案例 package com.gblfy;/*** 自动拆箱引起的空指针问题场景*/ public class Unboxingnpe {private static int add(int x, int y) {return x y;}private static boolean compare(long x, long y) {return x >…

阿里靠什么支撑 EB 级计算力?

阿里妹导读:MaxCompute 是阿里EB级计算平台,经过十年磨砺,它成为阿里巴巴集团数据中台的计算核心和阿里云大数据的基础服务。去年MaxCompute 做了哪些工作,这些工作背后的原因是什么?大数据市场进入普惠红海的新阶段&a…

linux查看网卡的驱动命令行,Linux下查看网卡驱动和版本信息

Linux下查看网卡驱动和版本信息查看网卡生产厂商和信号查看基本信息:lspci查看详细信息:lspci -vvv # 3个小写的v查看网卡信息:lspci | grep Ethernet查看网卡驱动查看网卡驱动信息:lspci -vvv # 找到网卡设备的详细信息&#xff…

为什么说流处理即未来?

本文整理自 Flink 创始公司 Ververica 联合创始人兼 CTO - Stephan Ewen 在 Flink Forward China 2018 上的演讲《Stream Processing takes on Everything》。 这个演讲主题看似比较激进:流处理解决所有问题。很多人对于 Flink 可能还停留在最初的认知,…

别再用那些已经淘汰的技术了!2020 年 9 大顶级 Java 框架出炉!!

来源 | Patricia Neil责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)顶级Java框架#1:Spring顶级Java框架#2:Hibernate顶级Java框架#3:Struts顶级Java框架#4:Play顶级Java框架#5:Googl…

字符串、数组、集合在使用时出现空指针怎么办?_03

文章目录1. 寻找代码案例中出错的场景2. 案例1. 寻找代码案例中出错的场景 字符串使用equals时报空指针错误 对象数组最燃new出来了,但是如果没有初始化,一样会报空指针错误 List对象add null不报错,但是addAll 不能添加null,否则…

云原生时代来袭 下一代云数据库技术将走向何方?

全面云化的时代已经到来,面对一系列的新技术和挑战,数据库市场将面临怎样的变革?作为云服务提供商,如何帮助更多的企业级用户把握“云”潮,提供最高效、最具价值的数据库解决方案? 日前,在阿里…

linux popd 命令,Linux中的pushd推入和popd弹出命令

pushd和popd是允许您使用目录堆栈并在Linux和其他类似Unix的操作系统中更改当前工作目录的命令。尽管pushd和popd是非常强大和有用的命令,但它们却被低估并且很少使用。在本教程中,我们将向您展示如何使用pushd和popd命令导航系统的目录树。目录堆栈目录…

开发跨平台app推荐React Native还是flutter?

嗯。。。这个问题十分不好回答啊(捋下鱼须)。闲鱼作为flutter领域的先驱者,以及fish_redux、flutter_boost等当红flutter库的作者,当然是欢迎广大的开发者多多使用flutter相关技术栈 逃~:)。咳咳,不过呢,我们还是正经得聊一下Reac…

直播连麦贾扬清,谈谈他所理解的四大 AI 落地问题 | 攻“疫”技术公开课

从机器学习模型的层次来看,大致经历了两次发展浪潮:浅层学习(Shallow Learning)和深度学习(Deep Learning)。1980年代,人工神经网络的反向传播算法(也叫Back Propagation算法或者BP算…

解决linux下创建用户时出现Creating mailbox file: File exists

在linux下用useradd添加用户时,出现错误: Creating mailbox file: File exists? 为什么会出现这样的问题? 原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱) 路径是:/var/spool/mail/用户名. 可以直接用命令#rm -rf /var/spool/mail/用户…

flutter在2019年会有怎样的表现?

Flutter的趋势 在移动端,受成本和效率的驱使,跨平台一站式开发慢慢成为一个趋势。从Hybird,RN,WEEX,Flutter,到各种小程序或快应用的大量涌现,虽然很多跨平台方案都有各自的优缺点,…

linux区分用户的权限级别可用,Linux用户及权限管理

基本操作首选我们梳理一下 Linux 下的用户、用户组、文件权限等基本知识,然后后面通过一个案例来实际演示一下权限设置的一些操作。首先 Linux 系统中,是有用户和用户组的概念的,用户就是身份的象征,我们必须以某一个用户身份来操…

别人家的工程师:阿里巴巴工程师有了新帮手,AI可帮助修Bug

尽管工程师用代码创造了AI,但AI又可以对这些代码点评一番、甚至修复Bug,工程师和AI的关系正在变得微妙。 AI评委引热议,阿里巴巴表示:AI不会取代工程师 4月18日,2019阿里巴巴研发效能峰会——“83行代码挑战赛”决赛…

31岁,年薪33万:“谢谢今天裁掉我” !有底气的人生无需解释!

最近脉脉一则帖子炸锅了:某HR发帖称公司以按时下班为由裁员。这种情况下很多人都慌了,大家纷纷把“副业救国”奉为神律。可是你有没有认真的想过,为什么现在大家都需要副业:意外裁员后,房贷能够按时还上不至于“回收”…

linux用户、用户组 增删改查专栏

文章目录一、用户操作1. 用户创建2. 用户删除3. 用户修改4. 用户查看二、用户组操作2.1. 用户组创建2.2. 用户组删除2.3. 用户组修改2.4. 用户组查看三、用户和用户组操作演示3.1. 用户和用户组创建3.2. 手动将用户添加到指定用户组3.3. 权限演示一、用户操作 1. 用户创建 #创…

linux脚本语言求累加和,Linux Shell脚本语言与数学表达式

当你理解了Shell脚本,每当需要时都能流畅编写时,那种感觉很爽的。本章中,我们将教你用脚本语言进行比较复杂的数学运算。让我们从斐波那契数列开始吧。斐波那契数列,又称黄金分割数列,指的是这样一个数列:0…