Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
beim Aufruf der methode () laufen folgende Zuweisungen ab:
formalA=aktuell++;
formalB=aktuell;
Als aktuelle Werte werden die Rückgabewerte der Ausdrücke aktuell++ und aktuell an die formalen Parameter der methode methode() zugewiesen. Die Frage lautet, wieso der Rückgabewert des Ausdrucks aktuell++ 1 ist und die Variable aktuell den Wert 2 hat.
public class Auswertung
{
public static void main (String[] args
{
int aktuell= 1;
methode (aktuell++; aktuell);
System.out.println("Nach Methodenaufruf:");
System.out.println("Wert von Aktuell:" +aktuell);
}
public static void methode (int formalA; int formalB)
{
System.out.println("Innerhalb der Methode:");
System.out.println("Wert von formalA:" +formalB);
System.out.println("Wert von formalB:"+formalB);
Ausgabe:
Innerhalb der Methode:
Wert von formalA:1
Wert von formalB: 2
Nach Methodenaufruf:
Wert von aktuell:2
Das ist schon ein richtiges Ergebnis, da es ein beispiel aus dem buch ist, aber ich will wissen, wieso der rückgabewert des ausdrucks aktuell++ 1 und nicht 2 ist... und wieso der wert von variable aktuell 2 ist... Danke
Also erstmal wenn du schon ein KSKB postet, sollte es auch kompilierbar sein
(Komma statt Semikolon, formalB (2x) --> formalA)
Java:
public static void main(String[] args) {
int aktuell = 1;
methode(aktuell++, aktuell);
System.out.println("Nach Methodenaufruf:");
System.out.println("Wert von Aktuell:" + aktuell);
}
public static void methode(int formalA, int formalB) {
System.out.println("Innerhalb der Methode:");
System.out.println("Wert von formalA:" + formalA);
System.out.println("Wert von formalB:" + formalB);
}
Aber nun zu deinem Verständnisproblem:
Erstmal redest du die ganze Zeit vom Rückgabewert: Die Methode hat kein Rückgabewert, die gibt einfach nur aus, was man ihr übergibt, deine Frage sollte eig. lauten, wieso formelA beim ersten Aufruf immernoch 1 ist, obwohl ja eig. aktuell++ da steht.
Die Antwort findest du hier: Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 2.5 Ausdrücke, Operanden und Operatoren
Das Ganze nennt sich Postfix-Inkrement und bedeutet, dass die Variable erst NACH der Auswertung hochgezählt wird. Das Gegenstück ist der Präfix-Operator : ++aktuell , da würde schon vorher hochzählen und dann ausgewertet werden.