Java 关于具有多个条件的If语句的快速问题

Java 关于具有多个条件的If语句的快速问题,java,conditional,Java,Conditional,可能重复: 这是一个我几年前就应该知道答案的问题,但是如果我在用Java编写一个if语句,它的内容类似于if(x!=null&&y==null&&x.equals(z)),这安全吗?我假设if语句条件是从左到右解释的,因此检查if x!=以null开头将确保在条件的x.equals(z)部分不会引发(至少由x引发)null指针异常。这准确吗?是的。它被称为短路逻辑:。是。这就是所谓的短路逻辑:。简单的回答是:你做得很好 答案很长:这样做很好,因为Java使用了一种叫做短路布尔求值的方法。读一读

可能重复:


这是一个我几年前就应该知道答案的问题,但是如果我在用Java编写一个if语句,它的内容类似于if(x!=null&&y==null&&x.equals(z)),这安全吗?我假设if语句条件是从左到右解释的,因此检查if x!=以null开头将确保在条件的x.equals(z)部分不会引发(至少由x引发)null指针异常。这准确吗?

是的。它被称为短路逻辑:。

是。这就是所谓的短路逻辑:。

简单的回答是:你做得很好


答案很长:这样做很好,因为Java使用了一种叫做短路布尔求值的方法。读一读

简短的回答:你做得很好


答案很长:这样做很好,因为Java使用了一种叫做短路布尔求值的方法。读一读

简短而简单:是的,没错。:)

简短:是的,这是正确的。:)

就像@mellamokb说的短路一样

我只想补充一点,如果你有这样的比较:

if (str != null && str.equals("FINAL STRING") {...}
更好地使用:

if ("FINAL STRING".equals(str)) {...}

第一种方法经常被选择,但条件应该尽可能简单:)

就像@mellamokb说的短路一样

我只想补充一点,如果你有这样的比较:

if (str != null && str.equals("FINAL STRING") {...}
更好地使用:

if ("FINAL STRING".equals(str)) {...}

第一种方法通常是可以选择的,但条件应该尽可能简单:)

这样的事情最好由工程师检查。这是非常严格的,精确的,是免费的,不像C++。@谢尔盖:但是在StasOfFuff.com上问2分钟就有4个答案了。这样的事情最好通过检查。它非常严格、精确,而且是免费的,不像C++。@谢尔盖:但是在StasOfFuff.com上问2分钟后得到4个答案就容易多了。