到底什么是空指针?如何避免空指针_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万元,并成立了疫情防控专项基金。同时,通过旗下“一汽出行”公司组织 “特别爱心车队”,在抗击疫情期间,提供安全、…

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

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

为什么说流处理即未来?

本文整理自 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,否则…

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

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

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

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

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

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

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

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

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

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

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

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

你应该知道的 HBase 基础,都在这儿了

阿里妹导读:2006 年10 月Google 发布三架马车之一的《Bigtable:A Distributed Storage System for Strctured Data》论文之后,Powerset 公司就宣布 HBase 在 Hadoop 项目中成立,作为子项目存在。后来,在2010 年左右逐渐…

一文读懂Docker及其对系统管理员的重要性

作者 | Damian Perera编译 | 火火酱,责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)自从Docker在2013年初上线以来,就与程序员及系统管理员之间产生了一种爱恨交加的奇妙关系。虽然与我交谈过的一些经验丰富的的开发人员…

主流微服务注册中心浅析和对比

开源产品受开发者热捧,是因为其代码透明、可以参与共建、有社区进行交流和学习,当然更重要的是开源产品的接入成本低。个人开发者或者中小型公司往往会将开源产品作为选型首选。 开发者通过阅读源代码,理解产品的功能设计和架构设计&#xf…

linux内核重要结构体,Linux中list_head结构体相关 | 技术部落

在Linux内核中,提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的,但是list_head的引入,使得内核数据结构也可以拥有面向对象的特性,通过使用操作list_head 的通用接口很容易实现代码的重用&#xff0…

Java老矣,尚能饭否?2020 Java生态系统报告出炉

最近,Jrebel公布了一份2020 Java生态系统报告,这份报告主要关注开发人员在开发过程中使用的技术。这份报告包含了技术人员正在用的编程语言、应用程序架构、应用服务器、运行时平台、框架技术、IDE、JRE/JDK版本、数据库、部署模型、构建工具和虚拟化工具…

AI评委引热议,阿里巴巴表示:AI不会取代工程师

昨日,一位能给工程师代码打分的“AI评委”引发了热议。起因是在2019阿里巴巴“83行代码挑战赛”决赛现场,一位运行在云端的AI评委和现场的专家评委、大众评委配合,一起对选手提交的的代码做综合评价。 “AI是否会取代工程师”的话题再次在网络…

windows2012运行linux,Linux一分钟部署完毕上线运行,windows server你要折磨我两天?...

原标题:Linux一分钟部署完毕上线运行,windows server你要折磨我两天?周四晚上好,各位~~经过数度折腾之后,终于对windows累觉不爱了。且不说点点点的弊端,浪费鼠标左右键的机械力,还有无数个需要…