Bitwise AND (&) Ausdruck in Java

Ich debugge Code, der in ihm hatexpr1 & expr2 woexpr1 hat eine Nebenwirkung, die sich auf @ auswirexpr2 Bewertungsergebnis. Ich vermute, dassexpr2 wird vor @ ausgewertexpr1, da JLS die Auswertung von links nach rechts für @ garantie&&, aber nicht unbedingt für&. Ich vermute auch, dass die Änderung der Auswertungsreihenfolge auf die Optimierung durch HotSpot zurückzuführen ist (wir verwenden Java 6u20). Wissen Sie, ob HotSpot eine solche Optimierung durchführen kann? Besser noch, geben Sie Hinweise auf die Dokumentation, die den Verdacht entweder stützen oder beseitigen. Danke im Voraus

EDIT: Vielen Dank für die Vorschläge, den Code so umzuschreiben, dass er korrekt und lesbar ist - Sie haben Recht, aber ich habe es bereits getan, also ist es nicht das, wonach ich suche. Leider ist es schwierig, die Änderung zu testen, weshalb ich hier die Frage stelle.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage