Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java if语句中的操作顺序_Java_If Statement - Fatal编程技术网

Java if语句中的操作顺序

Java if语句中的操作顺序,java,if-statement,Java,If Statement,我有下面的if结构 ArrayList<String> list; if(list != null){ if(list.get(0).equals("value"){ //do stuff } } 可以把它写成一个if语句吗?如果第一个if语句导致false,则第二个if语句将毫无意义,因为它将抛出NullPointerException,请使用&&运算符 ArrayList<String> list; if(list !

我有下面的if结构

ArrayList<String> list;
if(list != null){
      if(list.get(0).equals("value"){
            //do stuff
      }
}
可以把它写成一个if语句吗?如果第一个if语句导致false,则第二个if语句将毫无意义,因为它将抛出NullPointerException,请使用&&运算符

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

}

逻辑运算符将单独的条件组合到一个语句中。它们分别是&&和| |,分别称为和或,但可以根据语言的不同而变化。您可能希望使用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.get0.equalsvalue,并抛出一个可能的空指针,其中list!=在第一个示例中,null将首先运行,以防止由于sce的工作方式而出现任何可能的null指针。

使用&&组合ConditionsHanks。他已经预料到它会像那样工作,但希望安全@阿宾莫尔:是的。
if(list.get(0).equals("value") && list != null){
     //do stuff
}