2012-09-10 23 views

回答

7

javac编译器做了很少的优化。

JIT可以优化代码,但在这种情况下,您可以确定&&||总是从左到右进行评估。

除了赋值运算符所有的二元运算符从左评估向右

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html


从JLS。

15.7。评估顺序

Java编程语言保证操作符的操作数看起来是按照特定的评估顺序(即从左到右)进行评估的。

建议代码不要严格依赖于此规范。当每个表达式至多包含一个副作用时,代码通常会更清晰,作为其最外层操作,并且代码并不完全依赖于由表达式的从左到右的评估导致出现哪种异常。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html

+0

你能参考的东西在Java规范或为什么我可以肯定的是任何Java编译器不来的想法“哎,正确的操作数被称为是假的编译时间,短电路运营商被使用 - 所以我会抛弃它“ – AvrDragon

+2

Oracle Java教程是不够的? ;)阅读JLS通常要困难得多。 –

+0

其实还不够,因为短路是一些特殊情况,可能会有特殊的行为。但现在已经足够了。谢谢:3 – AvrDragon