Operatorenreihenfolge bestimmt, in welcher Reihenfolge die Operatoren ausgeführt werden müssen. Also vergleichbar mit einer Klammerung.
Aber das Beispiel zeigt ja recht gut, dass es nicht nur um die Operatoren selbst geht sondern auch um die Reihenfolge der Auswertung der Operanden.
So kann man a() + b() * c() nehmen. Hier besagt die Operatornreihenfolge, dass die Multiplikation vor der Addition ausgeführt wird.
Aber bezüglich der Aufrufe ist nicht die Ausführung der Operatoren verantwortlich sondern hier kommt die Auswertung der Operanden zum tragen. (Also nicht 15.2 sondern 15.7 der JLS).
Dies ist gerade bei diesen Fällen, wie sie hier besprochen werden, aus meiner Sicht existenziell.
Die Reihenfolge, in der etwas gemacht wird, wird also von beidem - der Operatoren Reihenfolge und der Auswertung der Operanden bestimmt.
Hier kommt aber jetzt die große Frage von mir:
Bei dem Beispiel mit a[....(a=b)...]: Wo findet sich die Definition des Array Zugriffs. dass halt erst das Array selbst bestimmt wird und dann das Element bestimmt wird - so dass die Zuweisung des b-Arrays nichts mehr verändert?
- Ist dies Bestanteil der JLS oder JVMS?
- Falls das dort nicht festgelegt wurde: Ist es evtl. woanders festgelegt? Ist es Bestandteil der Offiziellen Tests von Oracle?
Evtl. hat das ja jemand gerade parat ...
@Tobias-nrw: Da Du so sicher bist, dass alles definiert ist, wirst Du das evtl. wissen?