L
A D I N G

Java判断字符串是否为null的equals的正确用法

在业务需求中,我们经常会判断是否为null而去做一些业务处理,用到了equals方法,但是你想想之前真的没有用错吗?

话不多说,这个经常用,直接上代码

package com.example;  import lombok.extern.slf4j.Slf4j;  /**  * @author XuYangWei  * @Date 2021/1/23 9:06  */  @Slf4j public class TestEquals {     public static void main(String[] args) {         log.info("我是叫null的小伙子,让我来~");         toTestEquals(null);     }      public static void toTestEquals(String s) {         String y = "y";         if (y.equals(s)) {             log.info("打印不出我,实际业务中equals相等后再我这里做业务代码哦,嘿嘿~~~");         }         try {             if (s.equals(y)) {                 log.info("看异常日志,不用看我,哼~");             }         } catch (Exception e) {             log.info("住手,这里不可以!");             log.info("我是空指针异常");         }     } }

这里传递一个不为空的字符串s和为空的变量y是null作比较,前面的判断我们先把参数s放前面,后面的判断我们把y放前面。

我们看看测试结果:

同时是两者作比较,前面的方法不会出现空指针异常,跳出if;后面的方法在作比较的时候会直接在if判断的时候出现空指针异常,被捕捉到异常日志输出。

根据打印我们就能看出结果,这种问题新手很容易忽略,以为确定不为null的定值和可能为null的变量比较不管谁在前谁在后都一个样。

总结:

不为null的定值和可能为null的变量比较,一定要定值在前面,变量在后面。