错误代码示例:

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. JAVA类的继承之多态特性

    父类可以接收子类的实例,方法的覆盖,属性的隐藏,这些都使我非常疑惑,今天有点时间记录之. 话不多说,直接上代码上结果 1. public class TestDto{ public static vo ...

  2. 1. 容器化部署一套云服务 第一讲 Jenkins(Docker + Jenkins + Yii2 + 云服务器))

    容器化部署一套云服务系列 1. 容器化部署一套云服务之Jenkins 一.购买服务器 服务器

  3. 286万QPS!腾讯云TDSQL打造数据库领域的“超音速战机”

    Bloodhound SSC超音速汽车将陆地极限速度提升到1678公里/小时,号称陆地“超音速战斗机”.无独有偶,同样也在2017年,在英特尔®.腾讯金融云团队的共同见证下,腾讯云数据库TDSQL采用 ...

  4. 强化学习(十)Double DQN (DDQN)

    在强化学习(九)Deep Q-Learning进阶之Nature DQN中,我们讨论了Nature DQN的算法流程,它通过使用两个相同的神经网络,以解决数据样本和网络训练之前的相关性.但是还是有其他 ...

  5. Python编程从入门到实践笔记——类

    Python编程从入门到实践笔记——类 #coding=gbk #Python编程从入门到实践笔记——类 #9.1创建和使用类 #1.创建Dog类 class Dog():#类名首字母大写 " ...

  6. springcloud情操陶冶-bootstrapContext(三)

    本文则将重点阐述context板块的自动配置类,观察其相关的特性并作相应的总结 自动配置类 直接查看cloudcontext板块下的spring.factories对应的EnableAutoConfi ...

  7. k8s健康检查(七)--技术流ken

    默认的健康检查 强大的自愈能力是 Kubernetes 这类容器编排引擎的一个重要特性.自愈的默认实现方式是自动重启发生故障的容器.除此之外,用户还可以利用 Liveness 和 Readiness ...

  8. 以太坊工作原理之txpool详解

    txpool详解 交易池txpool作为区块链系统的重要组成部分,对系统的安全性和稳定性具有重要作用.功能可归纳为:交易缓存.交易验证和交易过滤. 基本介绍 交易分类和缓存 txpool主要包含两个重 ...

  9. 第一册:lesson 115.

    原文:Knock,Knock! question:What does Jim have to drink? Isn't there anyone at home? I'll knock again , ...

  10. 基础知识:编程语言介绍、Python介绍、Python解释器安装、运行Python解释器的两种方式、变量、数据类型基本使用

    2018年3月19日 今日学习内容: 1.编程语言的介绍 2.Python介绍 3.安装Python解释器(多版本共存) 4.运行Python解释器程序两种方式.(交互式与命令行式)(♥♥♥♥♥) 5 ...