布尔值中操作数的顺序是否有效?

pet*_*ust -1 java boolean

布尔值中操作数的顺序是否会影响评估顺序?我可以依靠一个例子

String s = ...;
if (s != null && s.length() > 10) ...
Run Code Online (Sandbox Code Playgroud)

我似乎记得Java语言没有定义评估顺序,并且null值s可能导致NPE.这仍然是正确的(a)原则上和(b)在实践中使用常见的Java实现吗?

更新:我找不到确切的副本.有趣的是看到答案中的意见分歧并得到它的支持 - 嗯好!

Jes*_*per 5

是的,它确实很重要

... Java语言没有定义评估顺序

不是真的.参数从左到右进行计算,因此表达式s != null && s.length() > 10将永远不会抛出NullPointerException.

请参阅Java语言规范中的15.7表达式 - 评估顺序.