2012-09-10 24 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