无感NullPointerException的值相等判断方法

目录
  • 方法一:
  • 方法二(更优雅):

场景:当我们需要去判断一个 入参/查库 返回的开关变量(通常是个Integer类型的)时,常常会写如下的if-else判断语句。但又会为在生产环境看到的「NullPointerException」感到困扰。遇到过这样问题的小伙伴,可以继续向下看:

public static void main(String[] args) {
   Integer a = 1;
   Integer b = null;
   if(b!=1){
      System.out.println("不等于");
   }else {
      System.out.println("等于");
   }
}

这里b=nll,直接来看「b!=1」是可以打印出「不等于」的,但结果竟是出乎意料的空指针异常:

Exception in thread "main" java.lang.NullPointerException
    at com.XXX.Controller.main(XXX.java:223)

为了避免上面的问题:

方法一:

在if分支中添加判空的逻辑:

if(null!= b && b!=1)

方法二(更优雅):

我们可以使用「Objects.equals()」工具类来实现判断逻辑:

public static void main(String[] args) {
   Integer a = 1;
   Integer b = null;
   if(!Objects.equals(1,b)){
      System.out.println("不等于");
   }else {
      System.out.println("等于");
   }
}

输出结果:

不等于

当然,不影响本就不相等的情况,例如:「b=2」,输出的是「不等于」

到此这篇关于无感NullPointerException的值相等判断的文章就介绍到这了,更多相关NullPointerException的值相等判断内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android中利用NetworkInfo判断网络状态时出现空指针(NullPointerException)问题的解决方法

    在Android中,很多人会用如下的方法判断当前网络是否可用: /** * 获取当前网络状态(是否可用) */ public static boolean isNetworkAvailable() { boolean isAalable = false; ConnectivityManager connManager = (ConnectivityManager) BaseApplication.getApplication().getSystemService(Context.CONNECTI

  • java.lang.NullPointerException异常问题解决方案

    java.lang.NullPointerException异常原因是因为创建了一个引用类型的变量却没有指向任何对象而又去通过这个引用类型变量加点的形式去访问非静态的方法及属性. 给出三种情况, 第一种情况,在启动类中定义了引用类型变量,赋值为空: /** * 引用类型变量没有指向对象所引起的空指针异常 * @author Superhero * @version 2018年12月16日上午10:32:43 */ //图书类 class Books { private String name;

  • java 避免出现NullPointerException(空指针)的方法总结

    java 避免出现NullPointerException(空指针)的方法总结 Java应用中抛出的空指针异常是解决空指针的最好方式,也是写出能顺利工作的健壮程序的关键.俗话说"预防胜于治疗",对于这么令人讨厌的空指针异常,这句话也是成立的.值得庆幸的是运用一些防御性的编码技巧,跟踪应用中多个部分之间的联系,你可以将Java中的空指针异常控制在一个很好的水平上.顺便说一句,这是Javarevisited上的第二个空指针异常的帖子.在上个帖子中我们讨论了Java中导致空指针异常的常见原因

  • 解决java.lang.NullPointerException报错以及分析出现的几种原因

    java.lang.NullPointerException出现的几种原因: 1.字符串变量未初始化 2.接口类型的对象没有用具体的类初始化,比如: Map map // 会报错 Map map = new Map(); //则不会报错了 3.当一个对象的值为空时,你没有判断为空的情况. 4.字符串与文字的比较,文字可以是一个字符串或Enum的元素,如下会出现异常 String str = null; if(str.equals("Test")){ //这里的代码将不会被触发,因为会抛

  • 详解Java中NullPointerException异常的原因详解以及解决方法

    NullPointerException是当您尝试使用指向内存中空位置的引用(null)时发生的异常,就好像它引用了一个对象一样. 当我们声明引用变量(即对象)时,实际上是在创建指向对象的指针.考虑以下代码,您可以在其中声明基本类型的整型变量x: int x; x = 10; 在此示例中,变量x是一个整型变量,Java将为您初始化为0.当您在第二行中将其分配给10时,值10将被写入x指向的内存中. 但是,当您尝试声明引用类型时会发生不同的事情.请使用以下代码: Integer num; num

  • 无感NullPointerException的值相等判断方法

    目录 方法一: 方法二(更优雅): 场景:当我们需要去判断一个 入参/查库 返回的开关变量(通常是个Integer类型的)时,常常会写如下的if-else判断语句.但又会为在生产环境看到的「NullPointerException」感到困扰.遇到过这样问题的小伙伴,可以继续向下看: public static void main(String[] args) {    Integer a = 1;    Integer b = null;    if(b!=1){       System.ou

  • Numpy对于NaN值的判断方法

    numpy.nan的数据类型是float类型 import numpy as np type(np.nan) # float 任何数字和numpy.nan进行计算,返回的结果都是nan import numpy as np print(np.nan + 1) # nan print(np.nan - 1) # nan print(np.nan * 1) # nan print(np.nan / 1) # nan 对空值NaN的判断不能直接使用==表达式,bool表达式,以及不可直接使用if语句判

  • GoLang jwt无感刷新与SSO单点登录限制解除方法详解

    目录 前言 为什么使用JWT Cookie和Session token (header.payload.signature) token 安全性 基于token安全性的处理 客户端与服务端基于无感刷新流程图 golang实现atoken和rtoken 颁发token 校验token 无感刷新token 完整实现代码 SSO(Single Sign On)单用户登录以及无感刷新token 实现思路 实战代码 小结 前言 为什么使用JWT Jwt提供了生成token以及token验证的方法,而tok

  • js判断输入框不能为空格或null值的实现方法

    实例如下所示: var sno = $('#sno').val(); var sname = $('#sname').val(); if((sno.indexOf(" ") >= 0 || sno == null) || (sname.indexOf(" ") >= 0 || sname == null)){ alert('学号和名称不能为空格或null值'); return; }else{ } 以上这篇js判断输入框不能为空格或null值的实现方法就是

  • 详解java中String值为空字符串与null的判断方法

    Java空字符串与null的区别 1.类型 null表示的是一个对象的值,而不是一个字符串.例如声明一个对象的引用,String a=null. ""表示的是一个空字符串,也就是说它的长度为0.例如声明一个字符串String s="". 2.内存分配 String a=null:表示声明一个字符串对象的引用,但指向为null,也就是说还没有指向任何的内存空间. String s="":表示声明一个字符串类型的引用,其值为""空

  • jstl中判断list中是否包含某个值的简单方法

    如何判断list中是否包含某个值, 很遗憾,contains是不行的,只能穷举了 <a id="aHref_${device[0]}" onclick='addSelectDeviceId(${device[0]})'> <c:set var="iscontain" value="false" /> <c:forEach items="${sessionScope.SelectDeviceIdsList}&

  • mybatis中<if>标签bool值类型为false判断方法

    昨天实现一个功能,根据文章的id或者别名查找文章. 起初采用mybatis的Example进行查询,对参数artName进行判断,如果是纯数字就byId查询,否则就by别名.由于查询文章的同时,需要关联查询文章分类标签,所以选择采用select语句映射的方式查询,但又不想写两个查询方法,就使用了mybatis中动态sql. /** * 查询文章 * @param artName id 或 别名 * @param byId 如果是 true 则按照id查询 * 否则 按照别名查询 * @retur

  • JavaScript判断两个值相等的方法详解

    目录 前言 非严格相等 严格相等 同值零 同值 总结 前言 在 JavaScript 中如何判断两个值相等,这个问题看起来非常简单,但并非如此,在 JavaScript 中存在 4 种不同的相等逻辑,如果你不知道他们的区别,或者认为判断相等非常简单,那么本文非常适合你阅读. ECMAScript 是 JavaScript 的语言规范,在ECMAScript 规范中存在四种相等算法,如下图所示: 上图中四种算法对应的中文名字如下,大部分前端应该熟悉严格相等和非严格相等,但对于同值零和同值却不熟悉,

  • React如何使用refresh_token实现无感刷新页面

    目录 步骤如下: 具体实现 步骤如下: 1-token过期根据refresh_token获取新的token 重新获取数据 2-创建一个新的axios实例 [使用request防止再次进入请求拦截和请求响应而进入死循环] 3-根据请求相应的响应值 是不是401 是:说明token过期 然后进行判断store中的 user :{token:'*',refresh_token:'**'}中的 refresh_token和user对象是否存在 ,如果不存在说明之前没有登录过,直接去登录 4-使用新创建的

  • JS两个数组比较,删除重复值的巧妙方法(推荐)

    偶尔需要我们比较两个数组,在一个数组中删除另一个数组存在的值.我们常常用的方法是循环比较判断并删除,最近看到另一个好方法巧妙删除的例子: var arr1 = ["i", "b", "c", "d", "e", "f","x"]; //数组A var arr2 = ["a", "b", "c", "

随机推荐