2012-09-10 1 views

Répondre

7

Le compilateur javac fait très peu d'optimisation.

Le JIT peut optimiser le code, mais dans ce cas vous pouvez être sûr que && et || sont toujours évalués de gauche à droite.

Tous les opérateurs binaires à l'exception des opérateurs d'affectation sont évalués de gauche à droite

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


De l'JLS.

15,7. Ordre d'évaluation

Le langage de programmation Java garantit que les opérandes des opérateurs semblent être évalués dans un ordre d'évaluation spécifique, à savoir, de gauche à droite.

Il est recommandé que le code ne se base pas de façon cruciale sur cette spécification. Le code est généralement plus clair lorsque chaque expression contient au plus un effet secondaire, comme son opération la plus externe, et lorsque le code ne dépend pas exactement de quelle exception résulte de l'évaluation de gauche à droite des expressions.

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

+0

Pourriez-vous référer quelque chose dans la spécification Java ou pourquoi puis-je être sûr que tout compilateur java ne vient pas idée « hey, l'opérande droit est connu pour être faux de compilation, à court l'opérateur des circuits est utilisé - donc je vais juste jeter c'est parti " – AvrDragon

+2

Le tutoriel Oracle Java ne suffit pas? ;) La lecture du JLS est souvent beaucoup plus difficile. –

+0

En fait, pas vraiment assez, car un court-circuit est un cas particulier qui pourrait avoir un comportement spécial. Mais maintenant c'est suffisant. Merci: 3 – AvrDragon

Questions connexes