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;
    }
    

      

  • 相关阅读:
    2019 | 开启新的堕落生活
    2018博客之星评选,我非常需要您宝贵的一票!♪(・ω・)ノ
    前端开发 2018 回顾
    全栈设计模式套餐MVVM, RESTful, MVC的历史探索
    停止学习框架
    那些被浏览器阻止的模拟事件...
    Just Cause系列游戏品鉴
    GPU硬件加速原理 /转
    快速上手最棒的网格框架ag-Grid
    用户数据验证的正确姿势之assert
  • 原文地址:https://www.cnblogs.com/-flq/p/10399419.html
Copyright © 2011-2022 走看看