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

      

  • 相关阅读:
    Pytorch 四种边界填充方式(Padding)
    数据预处理 —— padding数据
    Python PIL彩色图像转灰度图像
    Python PIL读取与保存图片
    Python-OpenCV 彩色图像转灰度图像
    Python-OpenCV读取与保存图片
    Python 矩阵旋转180度
    Pytorch 扩展Tensor维度、压缩Tensor维度
    基于SSM的健身房管理系统
    大学生创新创业项目-智取乐食
  • 原文地址:https://www.cnblogs.com/-flq/p/10399419.html
Copyright © 2011-2022 走看看