顺序检查条件

问题描述:

所以我要顺序检查条件

if(A != null && (A.getFullName() == null || A.getFirstName().equals("")){}

是否JVM检查A.getFullName检查A.getFirstName前第一?订单是从左到右还是可以在A.getFullName之前检查A.getFirstName?我问,因为如果A.getFullNamenullA.getFirstName会给我一个NullPointerException

+0

你试图比较字符串值吗? – 2015-02-11 20:10:27

+0

Java字符串是双引号,你错过了一个括号。 – 2015-02-11 20:11:08

+0

像string这样的对象需要.equals(object)。你也会得到一个运行时exeption,因为JVM不处理它,因为你说从左到右你需要事先检查。 – 2015-02-11 20:11:30

是,Java的逻辑运算符做short-circuit。在你的情况下,这意味着如果A.getFullName()返回null,将不会调用A.getFirstName()

请参阅Java logical operator short-circuiting进一步讨论。

+0

这个问题被编辑了,现在没有任何可疑的字符串比较。 – immibis 2015-02-11 20:14:06

+0

@immibis:太好了,谢谢你指出。 – NPE 2015-02-11 20:14:25