if(loadFactor != null && !(trialExists(loadFactor))
和
if(!(loadFactor == null || trialExists(loadFactor))
要求我在评论中做出1(如果更改为2)。它有什么不同。
最佳答案
没有区别
在两种情况下:
loadFactor
为null,则将不评估trialExists(loadFactor)
,并且条件将为false,因此不会进入if
主体trialExists(loadFactor)
求值,并且条件将与结果相反-因此,如果if
返回假trialExists(loadFactor)
语句的主体这是因为
&&
和||
都短路了:&&
的第一个操作数为false
,则不评估第二个操作数,结果仅为false
||
的第一个操作数为true
,则不评估第二个操作数,结果仅为true
就个人而言,我更喜欢第一段代码而不是第二段代码。它对我来说是“如果我们有一个负载系数,并且没有任何试验。”第二段代码更加晦涩难懂,因为内部条件是“如果我们没有负载系数,或者它是现有的试验”,我认为这并不是特别自然的条件。