Ich rufe eine Methode mit zwei Argumenten auf, aber ich benutze k ++ wie folgt:
%Vor%Eigentlich möchte ich sicher sein, dass jvm zuerst das erste Argument und dann das zweite Argument ausführt. Wenn sich die Reihenfolge irgendwie ändert, werden die Argumente in falscher Reihenfolge übergeben.
Vielen Dank!
Ja, die Argumente werden garantiert von links nach rechts ausgewertet. Jeder Compiler, der den JLS-Regeln entspricht, sollte diesem folgen. Dies wird in JLS §15.7.4 :
Bei einer Methoden- oder Konstruktoraufruf- oder Klasseninstanzerstellung Ausdruck, Argumentausdrücke können innerhalb der Klammern erscheinen, durch Kommata abgetrennt. Jeder Argumentausdruck scheint vollständig zu sein vor jedem Teil eines beliebigen Arguments auf der rechten Seite ausgewertet.
Ja, das garantiert Java. Dies bedeutet jedoch nicht, dass die Verwendung des Codes so eine gute Idee ist: Leser Ihres Codes können durcheinander geraten.
Es ist viel sauberer, die Reihenfolge explizit anzuzeigen:
%Vor%Java unterstützt keine benannten Parameter. Sie haben also richtig verstanden, dass Parameter in Position gelesen werden.
Zum Beispiel werden eine Methode mit der Signatur (int, String) und eine Methode mit der Signatur (String, int) niemals miteinander verwechselt. Java berücksichtigt den Typ und die Reihenfolge der Parameter bei der Ermittlung der Methode anrufen.
Bei Ihrer Methode haben Sie immer Parameter, die vorhersehbar und einheitlich sind.
Aus diesem Grund wird das erste k ++ immer zuerst und das zweite k ++ immer danach ausgeführt, und das ist garantiertes Verhalten.
Tags und Links java methods argument-passing order-of-execution