暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Java判断null的几种方式

2145

组内code review时,有同学提到字符串判断空值的写法,如下两种,

(1)null在后,

    @Test
    public void testDemo1() {
    String str = null;
      if (str == null) {
        System.out.println("null在后");
        return;
      }
    }

    (2)null在前,

      @Test
      public void testDemo2() {
      String str = null;
      if (null == str) {
      System.out.println("null在前");
      return;
        }
      }

      这两种写法,有什么区别?

      这两个测试,都可以执行,有种解释是,null放在前面是为了避免少写一个"=",因为"null="书写会报错,防止笔误写成"=null",不会报错,进而漏掉问题。

      null==a是以前C语言的写法,因为C允许if(a=null)这种判断,但这个其实是少写了个"=",所以c开发的人员为了避免这问题,就出现了null==a的写法,因为这样一旦漏写了个=号,编译器就会编译不通过。

      但这在Java和c#这种面向对象的语言里面是不需要的,因为少个=号,不管java还是C#都是编译错误。

      因此,Java中对null进行判断放在前后没有什么区别,只是为了代码规范,为了避免写代码时书写错误(建议将null放在前面,并不强制)。

      顺带说下,Java中判断字符串是否为空的四种方法,

      方法一:最多人使用的一个方法,直观,方便,但效率很低,

        if(s == null || s.equals(""));

        方法二:比较字符串长度,效率高

           if(s == null || s.length() == 0);

          方法三:Java SE 6.0才开始提供的方法,效率和方法二几乎相等,但出于兼容性考虑,推荐使用方法二,

            if(s == null || s.isEmpty());

            方法四:这是一种比较直观,简便的方法,而且效率也非常的高,与方法二、三的效率差不多,

               if (s == null || s == "");

              注意,s == null这个判断是有必要存在的,如果String类型为null,进行equals(String)或length()等操作会抛出java.lang.NullPointerException。而且s==null的顺序必须出现在前面,不然同样会抛出java.lang.NullPointerException。


              如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,



              近期更新的文章:

              MySQL新身份验证插件caching_sha2_password

              金融知识小科普 - 北向资金

              MySQL的MVCC再学习

              金融知识小科普 - 宽基指数

              能从家中看球的球场


              近期的热文:

              "红警"游戏开源代码带给我们的震撼


              文章分类和索引:

              公众号1100篇文章分类和索引

              文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论