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

  • 就个人而言,我更喜欢第一段代码而不是第二段代码。它对我来说是“如果我们有一个负载系数,并且没有任何试验。”第二段代码更加晦涩难懂,因为内部条件是“如果我们没有负载系数,或者它是现有的试验”,我认为这并不是特别自然的条件。

    07-28 00:01