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

      

  • 相关阅读:
    进度条加载后显示页面
    解决跨域问题
    js下IE和FF的一些兼容写法总结
    linux
    linux 批量替换文件内容
    DVWA-1.9之fileupload
    python库安装失败的解决方法
    python程序打包
    CF 1133C Balanced Team
    CF 1133B Preparation for International Women's Day
  • 原文地址:https://www.cnblogs.com/-flq/p/10399419.html
Copyright © 2020-2023  润新知