我不明白 && 和 || 之间的区别 在某个方面。
If(a && b) { then do this }
现在,如果是假的,那么B是看了,但条件不测试。
但....
If(a || b) { then do this }
现在,如果 a 为真,则不查看b ,并且不测试条件。
为什么是这样。我认为 && 和 || 的目的是 有点帮助加快事情的进展。如果它可以通过测试第一个条件来确定结果,则不需要查看第二个条件。但是在 && 的情况下,它确实会查看它。而在 || 的情况下 它剂量。
我有这个权利吗?如果我这样做,这是为什么?
要理解答案,请提醒自己的真值表
AND
和OR
操作:AND true | false \--------+------- true | true | false ------+-------+------- false | false | false OR true | false \--------+------- true | true | true ------+-------+------- false | true | false
请注意第二列 for
AND
和第一列 forOR
:它们具有相同的值。这是理解为什么AND
在第一个计算结果为 时忽略第二个参数的关键false
:那是第二个参数无关紧要(第二列)的时候。OR
运算符的情况正好相反:现在false
第一个参数中的 a 意味着第二个参数很重要。但是,true
第一个参数(第一列)中的 a 意味着可以忽略第二个参数。这是他们目的的一小部分。更大的一个是基于其左侧的表达式右侧的保护。考虑一种情况,您要防止空
null
字符和字符串。如果&&
并且||
没有“短路”评估,您将被迫编写如下代码:if (s == null) return false; if (s.length() == 0) return false;
你可以写的原因
if (s == null || s.length() == 0) return false;
是短路:保证
s.length()
不会在null
字符串上调用。