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,否则结果会不太让你爽啊!
  • 相关阅读:
    Load a properties file Real's Java Howto
    [nodejs]保证你的程序死了还能复活:forever and forever webui MK2 博客园
    为嵌入式系统开发软件和为高性能计算或大型分布式平台开发软件,二者需要的技能在很大称度上相同,我不是第一个发现这一点的人。
    HTTP Range说明 lenoval的专栏 博客频道 CSDN.NET
    『NodeJS』简单的本地 DNS 代理脚本
    Automation | Coyote Point Systems
    Java 高层网络编程
    SQL 语句大全
    浅谈AVG游戏中的脚本
    How to debug Bluetooth
  • 原文地址:https://www.cnblogs.com/ihanliu/p/4711432.html
Copyright © 2011-2022 走看看