if conditionals:布置表达式变量放置顺序

时间:2016-09-27 20:09:32

标签: java variables if-statement boolean-expression placement

当我们使用if条件时,我们在布尔表达式中指定条件,如下所示:

if(boolean expression). 

如果我在布尔表达式中有两个变量,例如(bagWeight > WEIGHT_LIMIT),它们看起来重要的两个变量的顺序是什么?换句话说,我可以交换这两个变量吗?以下的地方? (WEIGHT_LIMIT < bagWeight)。请注意,它仍然是包重量小于重量限制,但我只是在布尔表达式中切换首先出现的顺序。是否取决于哪一个成为一个主题,就像一个专注于和评估的主题? (在这种情况下,我们会试图弄清楚包重是否超过限制。所以包重量会根据某些东西进行评估......我称之为主题。)

Eclipse没有向我尖叫它是错误的,直觉上它是有道理的,但不管怎么说,它是否让我感到烦恼,是否有更常见的编程习惯。所以我的问题是,我可以交换两个变量&#39;地方,没关系?它取决于作为主题的背景吗?哪个是更常见的编程习惯?

4 个答案:

答案 0 :(得分:1)

您可以根据需要随意更改两个变量的顺序。 Eclipse(或编译器)并不关心,它只是计算表达式并返回一个值,或者为true。

答案 1 :(得分:0)

  

我可以交换这两个变量的位置,如下所示吗? (WEIGHT_LIMIT&lt; bagWeight)

是的,它仍然可以完全相同。

订单仅在使用||&&等短路操作时才会播放。

的示例:

if (boolean1 || boolean2)

在这种情况下,首先评估boolean1。如果它的计算结果为true,则不会评估boolean2,因为第一个符合if语句的条件。

if (boolean1 && boolean2)

在这种情况下,如果boolean1的计算结果为false,那么boolean2永远不会被评估,因为boolean1为false的事实意味着即使boolean2为真, <{1}}陈述的条件永远不会得到满足。

希望有所帮助。

答案 2 :(得分:0)

Java评估的顺序&amp;&amp;和||如果所有内容都已按照示例中的方式计算到变量中,则不是那么重要。如果这些方法调用,则除非必要,否则不会调用“if”的第二部分。何时根本不评估myMethod()的示例。

if (true || myMethod())

if (false && myMethod())

这就是为什么你可能会在实际代码中看到与此类似的陈述。

String myStr = null;
if (myStr != null && myStr.trim().size() > 0)

如果Java要评估第二部分,那么当myStr为null时,你会得到一个NullPointerException。 Java将绕过第二部分的事实阻止了这种情况发生。

答案 3 :(得分:0)

在您的特定情况下,操作数的顺序无关紧要。由于if语句正在比较两个值,因此必须评估这两个值。但是,在某些情况下,订单 无关紧要:

  1. ||&&
  2. ||&&是速记逻辑运算符。如果第一个为真,则不会评估||的第二个操作数。如果第一个操作数为false,则不会评估&&的第二个操作数。

    1. ++--
    2. 这些可以产生不同的结果:

      if (i++ > i)
      
      if (i < i++)
      

      在第一行中,i在增量完成后进行评估,因此第一个操作数比第二个操作数小1。

      在第二行中,首先评估i,评估为i,然后评估i++,评估结果为i