zoukankan      html  css  js  c++  java
  • Java规则之条件语句中做空判断时使用||和&&常犯的错误

    错误代码示例:

    public String bar(String string) {
    //error 1
    if (string!=null || !string.equals(""))
    return string;
    //error 2
    if (string==null && string.equals(""))
    return string;
    //error 3
    if (string.equals(baz) && string != null)
    return string;
    //error 4
    if (string.equals(baz) || string == null)
    return string;
    }

    在Java中,逻辑运算符&&(短路与)和||(短路或)具体运算规则如下:

    &&的运算规则:

    i.当符号左边表达式为false时,&&将直接返回false不在判断符号右边表达式的结果。

    ii.当符号左边表达式为true时,将继续判断符号右边表达式,||的结果与右边表达式结果一致。

    ||的运算规则:

    i.当符号左边表达式为true时,||将直接返回true不在判断符号右边的表达式结果。

    ii.当符号左边表达式为false时,将继续判断符号右边表达式,&&的结果与右边表达式结果一致。

    根据&&和||的运算规则,下面我们来对以上错误实例进行分析。

    error1:

    实例中当string为null时,string!=null为false,将继续判断||右边的表达式,执行!string.equals("")时,由于string为null,程序将抛出NullPointerException。此处的||应该改成&&。

    error2:

             实例中由于是且运算当string为null,继续执行string.equals("")时抛出NullPointerException。应将&&改成||。

    error3和error4实例中都是因为空判断的位置错误,当string为空时会引起NullPointerException。应将空判断放到逻辑符号左边。

    正确实例如下:

    public String bar(String string) {
    //example1 ,||改成&&
    if (string!=null && !string.equals(""))
    return string;
    //example2,&&改成||
    if (string==null || string.equals(""))
    return string;
    //example3,改成(string != null)放在逻辑符号左边判断
    if (string != null && string.equals(baz))
    return string;
    //example4 同上
    if (string == null ||string.equals(baz))
    return string;
    }
    

      

  • 相关阅读:
    jquery中Ajax提交配合PHP使用的注意事项-编码
    js根据子目录数目显示父级目录
    smarty中函数的使用以及二维数组的使用
    在浏览器中对访问的网页中的cookie添加和修改
    Windows映射网络驱动器提示错误
    Linux防火墙/iptables使用
    VMWare启动虚拟机失败,提示锁定文件失败解决方法
    虚拟机中Linux设置当前ip
    基于搜索内容自己写一个分页功能
    Newtonsoft.Json
  • 原文地址:https://www.cnblogs.com/-flq/p/10399419.html
Copyright © 2011-2022 走看看