zoukankan      html  css  js  c++  java
  • java equals()用法错误解析

    if (!password2.equals(password1)|| "".equals(password1) || password1.equals(null))一句的错误解析:

    首先,正确的写法是if (null.equals(password1) || "".equals(password1) || !password1.equals(password2))。
     
    然后来解析错误的写法:
    主要的错误在password1.equals(null)这一句,这一句错的原因是,password1放在外面,如果它是null,那么就会报空指针异常。而且它应该第一个检查,因为如果password1为null,那么后面的就都不用检查了。
           !password2.equals(password1)同上,password2同样可能发生空指针问题,所以要将password1放外面,因为前面已经检测过了,所以如果执行这句,password1肯定不会为null。
    另外,也可以写成如下形式:if (StringUtils.isEmpty(password1) || !password1.equals(password2)),StringUtils.isEmpty(password1)就等同于null.equals(password1) || "".equals(password1),只是做了封装而已。
    附一句别人对StringUtils的说明:(转)StringUtils 方法的操作对象是 java.lang.String 类型的对象,是 JDK 提供的 String 类型操作方法的补充,并且是 null 安全的(即如果输入参数 String 为 null 则不会抛出 NullPointerException ,而是做了相应处理,例如,如果输入为 null 则返回也是 null 等,具体可以查看源代码)
     
     
    2、关于str.equal(“abc”)和”abc”.equal(str)
    这个好像争论也挺多的,第一种常量写在后面可能符合大多数人的习惯,也符合我们的逻辑思维。但是需要多一个str是否为null的判断。否则这里是有可能出现异常的。而后一种写法不需要多做关于是否为null这个判断。就我个人喜好来说,比较喜欢后一种写法。

    3、关于String的null

    /**
    * 测试java的String为null 的情况
    * create date:2009-6-3
    * author:Administrator
    *
    */
    public static void testNull(){
    String a= null,b = null,c="呵呵";
    System.out.println(a == null);
    System.out.println(a+b+c);
    }
    方法运行结果:
    true
    nullnull呵呵
    所以大家要注意了做字符串合并操作时,别忘记判断null,否则结果会不太让你爽啊!
  • 相关阅读:
    Spring Cloud Hystrix(熔断器)介绍及使用
    Fign入门学习
    Ribbon入门学习
    浅谈JSON5
    JSONObject 与 JSON 互转
    Windows下安装使用jmeter
    MongoDB 数据库高级进阶
    Mysq-l数据库下载以及安装(至安装成功cmd可访问)
    Mysql-数据库下载
    端口占用
  • 原文地址:https://www.cnblogs.com/ihanliu/p/4711432.html
Copyright © 2011-2022 走看看