错误代码示例:

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

  

Java规则之条件语句中做空判断时使用||和&&常犯的错误的更多相关文章

  1. javascript中 if条件语句中的判断条件类型总结

    在所有编程语言中if是最长用的判断之一,但在js中到底哪些东西可以在if中式作为判断表达式呢? 例如如何几行,只是少了一个括号,真假就完全不同,到底表示什么含义呢 var obj={}; obj.Fu ...

  2. Nginx中if语句中的判断条件

    一.if语句中的判断条件(nginx) 1.正则表达式匹配: ==:等值比较; ~:与指定正则表达式模式匹配时返回“真”,判断匹配与否时区分字符大小写: ~*:与指定正则表达式模式匹配时返回“真”,判 ...

  3. if语句中的判断条件(nginx)

    if语句中的判断条件   正则表达式匹配:     ==:等值比较;     ~:与指定正则表达式模式匹配时返回"真",判断匹配与否时区分字符大小写:     ~*:与指定正则表达 ...

  4. JAVA基础——Switch条件语句

    JAVA基础——switch 条件语句 switch语句结构: switch(表达式){ case值1: 语句体1: break: case值2: 语句体2: break: case值3: 语句体3: ...

  5. Java定义bean实体类中的变量时变量名的问题

    首先:TMD,这个问题花了我两个多小时,居然是因为一个字母的大小写导致的,我瞬间就&Y^%^&%&()*%¥%¥¥&^#@%&; 事情是酱紫的: 我定义了一个变 ...

  6. if 语句中的判断

    经常写shell的朋友可能已经很熟了.有不同意见的同学请指出来,在这里多谢大家了. bash中如何实现条件判断?条件测试类型:    整数测试    字符测试    文件测试 一.条件测试的表达式: ...

  7. 数字,字符串,逻辑比较在IF语句中的判断应用

    Shell  语言中的if条件 一.if的基本语法: if [ command ];then 符合该条件执行的语句 elif [ command ];then 符合该条件执行的语句 else 符合该条 ...

  8. 关于Switch case条件语句中无break的用法

    关于Switch case条件语句的另类用法       今天在拜读一位前辈的程序时,遇到了这样一段程序: /***************************/ switch(operation ...

  9. 针对安卓java入门:条件语句和循环语句

    条件语句: if(){..} if(){}else{..} if(){..}else if(){..} if(){..}else if(){..}else{..} switch(x){ case x: ...

随机推荐

  1. 每日分享!介绍Css 盒模型!

    如何定义盒模型: 在CSS盒子模型理论中,页面中所有的元素都是看成一个盒子,并且还占据一定的空间. 一个页面是由很多这样的盒子组成的.这些盒子之间都会相会影响,因此我们掌握CSS盒模型相当重要.需要理 ...

  2. 中文分词实战——基于jieba动态加载字典和调整词频的电子病历分词

    分词是自然语言处理中最基本的一个任务,这篇小文章不介绍相关的理论,而是介绍一个电子病历分词的小实践. 开源的分词工具中,我用过的有jieba.hnlp和stanfordnlp,感觉jieba无论安装和 ...

  3. 中国.NET:各地微软技术俱乐部汇总(更新中...)

    与微软技术的发展历程相似,微软俱乐部的发展同样经历着沉沉浮浮.2002年周庆麒先生创办的著名Office技术论坛Excel Home的上线,各种线上技术社区在中国的互联网世界中萌发.接着以鞠海洋(广州 ...

  4. 【Android Studio安装部署系列】三十六、Android studio3.2使用过程中注意事项

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 Android Studio升级到3.2之后,运行旧项目的时候出现了各种情况,特此记录下. 一.打包选项多了,一般情况下选择APK即 ...

  5. 我的那些年(9)~我来团队了,Mvc兴起了

    回到目录 我的那些年(9)~我来团队了,Mvc兴起了 在一次后出办事后直接去面试了 面试就是答卷子 六里桥一个好地址 搬回老家了 在老婆的建议下学驾照了 拿到大专毕业证了 买车了 愉一切可以愉的时间学 ...

  6. 学习ASP.NET Core Razor 编程系列十一——把新字段更新到数据库

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  7. 图像检索(4):IF-IDF,RootSift,VLAD

    TF-IDF RootSift VLAD TF-IDF TF-IDF是一种用于信息检索的常用加权技术,在文本检索中,用以评估词语对于一个文件数据库中的其中一份文件的重要程度.词语的重要性随着它在文件中 ...

  8. 浅谈基于Intellij IDEA Maven的配置与使用

    在java开发中,引入jar包的方式从种类上划分,可分为自动导入和手动导入,然而,手动导入繁琐,不是很适合当前开发模式,手动导入也被自动导入所取代. 当前,Maven和Gradle是比较主流的自动导入 ...

  9. svn 卡死住,关闭后,用CleanUp报错解决

    一.问题描述: 经常用SVN的人都知道,有时候更新文件更新着更新一般,突然卡顿住,死在那边动都不动出现提示:svn cleanup failed–previous operation has not ...

  10. RSA签名和验签Util

    目录 1.DigitalSign类 2.CryptException异常类 3.加签示例 1.DigitalSign类 import org.apache.commons.codec.binary.B ...