if语句中的操作顺序

时间:2017-07-11 14:34:42

标签: java if-statement

我有以下if结构

ArrayList<String> list;
if(list != null){
      if(list.get(0).equals("value"){
            //do stuff
      }
}

是否可以将其写为if语句? (如果第一个if语句导致false,则第二个if语句没有意义,因为它会抛出NullPointerException)

3 个答案:

答案 0 :(得分:2)

逻辑运算符将单独的条件组合成一个语句。这些值分别为&&||,分别称为ANDOR,但可能会根据语言而波动。您希望使用AND运算符来表示必须满足两个条件才能在if中运行代码,就像您的情况一样。如果满足任一条件,OR将运行代码。所以你可以把你的if写成:

if(list != null && list.get(0).equals("value")){
     //do stuff
}

在一行中“做东西”。但要注意短路评估。以上陈述与以下内容不同:

if(list.get(0).equals("value") && list != null){
     //do stuff
}

由于大多数语言评估条件的方式(请注意,大多数语言使用sce但不是全部)。语言将从左到右评估条件,并且只有在有条件的情况下才会评估连续条件。因此,如果条件被评估为FALSE && TRUE,则永远不会评估TRUE,因为已经遇到FALSE语句,使语句完全错误并且不值得浪费更多资源。在您的情况下,将在第二个示例中首先计算list.get(0).equals("value"),抛出一个可能的空指针,其中list != null将在第一个示例中首先运行,防止任何可能的空指针由于sce的工作方式。< / p>

答案 1 :(得分:0)

使用&amp;&amp;操作

{{1}}

答案 2 :(得分:0)

if (list != null && list.get(0).equals("value"))