条件运算符(关系运算符、条件运算符和三元运算符)
难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
1.什么是关系运算符?
关系运算符确定一个操作数是否大于,小于,等于或不等于另一个操作数。这些运算符中的大多数也可能看起来很熟悉。
请记住,在测试两个原始值是否相等时,必须使用“==”,而不是“ =”。
2.关系运算符表
接下来,我们将依次演示它们。
3.>、>=
当我们需要比较一个数是否大于一个数,或者一个数是否大于或等于一个数时,就可以使用>、>=:
运行结果:
4.<、<=
当我们需要比较一个数是否小于一个数,或者一个数是否小于或等于一个数时,就可以使用<、<=:
运行结果:
5.==
当我们需要比较一个数是否等于一个数时,就可以使用==:
运行结果:
6.!=
当我们需要比较一个数是否不等于一个数时,就可以使用!=:
运行结果:
7.instanceof
注:本小节可以跳过!后续章节会详细讲解。
instanceof是一个类型比较运算符,后面等我们学习类以及对象之后,再来讲解instanceof关键字。这里我们只是举一个例子:
运行结果:
比较对象是否是某个类型;例如上例中的value是否为字符串String类型。
8.什么是条件运算符?
条件运算符用于两个布尔表达式运算。
这些运算符表现出“短路”行为,这意味着仅在需要时才评估第二个操作数。
9.条件运算符表
接下来,我们依次演示它们。
10.&&
逻辑与(&&)运算符用于两个表达式的值都是真的时候,整个条件为真。
举个生活中的例子,我猜测“明天会下雨,而且还会下雪。”
请问,我的猜测对不对?
要想知道我的猜测对不对,分为两个部分来看,第一部分“明天会下雨”,第二部分“而且还会下雪”。
如果明天下了雨,而且还下了雪,那么我的猜测是对的;
如果明天下了雨,但是没有下雪,那么我的猜测是错的;
如果明天没有下雨,也没有下雪,那么我的猜测是错的;
如果明天没有下雨,但是下了雪,那么我的猜测是错的;
总共只有四种情况,其中只有一种情况是满足条件的,那就是“明天下了雨,而且还下了雪”。这种情况告诉我们,只有两个条件都满足了,整个条件才是满足的。
通过这四种情况,我有一个疑问:
如果明天下雨了,那么我还要再去确认有没有下雪,如果下雪了,我的猜测就是对的,没下雪,我的猜测就是错的。
如果明天没下雨呢?我还需要去确认有没有下雪吗?
下雨了,我去确认有没有下雪,说明还有一丝猜对的希望。没有下雨,也就是连猜对希望都没有了,我还有必要再去确认有没有下雪吗?当然不需要了,雨都没下,第一个条件都不满足了,第二个条件已经是于事无补了,再去看第二个条件的结果已经没有任何意义。
所以,我们这里得出两个结论:
- 参与逻辑与运算时,只要有一个条件不满足,整个条件都不满足。
- 当遇到条件不满足时,不用再运算后面的表达式。
其中,第二条表现出“短路”行为,这意味着仅在需要时才运算后面的表达式。
用代码表示“明天会下雨,而且还会下雪”的所有情况:
运行结果:
将变量名换成合法规范的写法:
我们通过真与假来列举一下四种情况:
真&&真,结果为真
真&&假,结果为假
假&&假,结果为假
假&&真,结果为假
换成true和false来列举一下:
true && true,结果为true
true && false,结果为false
false && false,结果为false
false && true,结果为false
用代码体现一下:
运行结果:
11.||
逻辑或(||)运算符用于两个表达式的值只要有一个为真的时候,整个条件为真。
举个生活中的例子,我猜测“明天会下雨,或者还会下雪。”
请问,我的猜测对不对?
要想知道我的猜测对不对,分为两个部分来看,第一部分“明天会下雨”,第二部分“或者还会下雪”。
如果明天下了雨,而且还下了雪,那么我的猜测是对的;
如果明天下了雨,但是没有下雪,那么我的猜测是对的;
如果明天没有下雨,也没有下雪,那么我的猜测是错的;
如果明天没有下雨,但是下了雪,那么我的猜测是对的;
总共只有四种情况,其中有三种情况是满足条件的,只有一种情况是错的,错的情况那就是“明天没有下雨,也没有下雪”。这种情况告诉我们,只有两个条件都不满足,整个条件才不满足。
通过这四种情况,我有一个疑问:
如果明天下雨了,那我有必要再去确认有没有下雪吗?没有必要了,因为不管下不下雪,我对猜测都是对。
如果明天没下雨呢?我还有必要再去确认有没有下雪吗?
当然有必要,因为还有一丝希望猜对,后面如果下雪了,那么我的猜测就是对;如果没有下雪,那么我的猜测就是错的。
所以,我们这里得出两个结论:
- 参与逻辑或运算时,只要有一个条件满足,整个条件都满足。
- 当遇到条件满足时,不用再运算后面的表达式。
其中,第二条表现出“短路”行为,这意味着出现了满足的条件后,整个条件表达式已经满足。
用代码表示“明天会下雨,或者还会下雪”的所有情况:
运行结果:
将变量名换成合法规范的写法:
我们通过真与假来列举一下四种情况:
真 || 真,结果为真
真 || 假,结果为真
假 || 假,结果为假
假 || 真,结果为真
换成true和false来列举一下:
true || true,结果为true
true || false,结果为true
false || false,结果为false
false || true,结果为true
用代码体现一下:
运行结果:
12.三元运算符?:
还有一个条件运算符是?:,可以被认为是if-then-else语句的简写(后续文章中马上会讲解到)。
?:运算符也称为三元运算符,因为它使用三个操作数。
当条件表达式为真时,执行表达式1;当条件表达式为假时,执行表达式2;
我们还是举一个生活中当例子:“如果明天下雨,我就带伞;如果明天不下雨,我就不带伞”。
换成三元表达式就是:
如果明天下雨?带伞:不带伞
如果条件表达式满足,会采用冒号前面的值;
如果条件表达式不满足,则会采用冒号后面的值;
用代码体现:
运行结果:
我们通过真与假来列举一下两种情况:
真 ? 表达式1 : 表达式2,结果为表达式1
假 ? 表达式1 : 表达式2,结果为表达式2
换成true和false来列举一下:
true ? 表达式1 : 表达式2,结果为表达式1
false ? 表达式1 : 表达式2,结果为表达式2
用代码体现一下:
运行结果:
小试牛刀
用三元运算符来表示“如果1+1==2,为真时打印‘正确’,为假时打印‘错误’”。
参考答案:
运行结果:
至此,Java中关系运算符、条件运算符和三元运算符相关内容讲解先告一段落,更多内容请持续关注。
附:运算符表
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
“全栈2019”Java第十八章:一元运算符
下一章
“全栈2019”Java第二十章:按位与、按位或、异或、反码、位运算
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号gorhaf,私信“Java学习小组”。
- 方式二:关注公众号gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!