我不明白&&和||之间的区别 在某种程度上.
If(a && b) { then do this }
Run Code Online (Sandbox Code Playgroud)
现在,如果是假的,那么B 是看了,但条件不测试.
但....
If(a || b) { then do this }
Run Code Online (Sandbox Code Playgroud)
现在,如果a为真,则b 未查看,并且未测试条件.
为什么是这样.我想到了&&和||的目的 是为了帮助加快速度.如果它可以通过测试第一个条件来确定结果,则不需要查看第二个条件.但在&&的情况下,它确实看着它.而在||的情况下 它很有意义.
我有这个权利吗?如果我这样做,为什么会这样?
要理解答案,请提醒自己真相表AND和OR操作:
AND true | false
\--------+-------
true | true | false
------+-------+-------
false | false | false
OR true | false
\--------+-------
true | true | true
------+-------+-------
false | true | false
Run Code Online (Sandbox Code Playgroud)
请注意第二列AND和第一列OR:它们具有相同的值.这是理解AND在第一个求值时忽略第二个参数的原因的关键false:当第二个参数无关紧要时(第二列).对于OR运算符来说恰恰相反:现在false第一个参数中的a意味着第二个参数确实重要.但是,true第一个参数(第一列)中的a表示可以忽略第二个参数.
我想到了&&和||的目的 是为了帮助加快速度.
这是他们目的的一小部分.更大的一个是基于左侧保护表达的右侧.考虑一种你想要防止空和null字符串的情况.如果&&并且||没有"短路"评估,您将被迫编写如下代码:
if (s == null) return false;
if (s.length() == 0) return false;
Run Code Online (Sandbox Code Playgroud)
你可以写的原因
if (s == null || s.length() == 0) return false;
Run Code Online (Sandbox Code Playgroud)
是短路的:有一个s.length()不会在null字符串上调用的保证.
&&用于执行and操作意味着如果其中任何一个expression/condition评估结果为假,则整个事情都是假的。
so if any one of the condition becomes false it won't even continue further to check
Run Code Online (Sandbox Code Playgroud)
||or如果其中任何一个 expression/condition评估结果为真,则用于执行操作,整个事情变为真。
so it continues till the end to check atleast one condition to become true.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29565 次 |
| 最近记录: |