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,否则结果会不太让你爽啊!
  • 相关阅读:
    POSTGRESQL 批量权限 管理方法
    centos7安装rabbitmq
    centos7使用cron任务的相关命令(与centos6有区别)
    crontab定时执行shell脚本
    使用kong-dashboard
    Kong组件构成及使用
    Docker基本操作命令
    微服务写的最全的一篇文章
    centos7安装kong和kong-dashboard
    sql练习03
  • 原文地址:https://www.cnblogs.com/ihanliu/p/4711432.html
Copyright © 2011-2022 走看看