magicmarcy.de | Tricky Java #1

Tricky Java #1

13. Mai 2025 - Lesezeit: 2 Minuten

 

Welcher Wert wird auf der Konsole ausgegeben:

public class Test {
    public static void main(String[] args) {
        int x = 10;
        int y = ++x + x++ + ++x;
        System.out.println(y);
    }
}

Antwortmöglichkeiten:

  1. 33
  2. 34
  3. 35
  4. Compilation Error

 

Step-by-Step zur Lösung:

Wie man vielleicht auf den ersten Blick schon erkennt, geht es hier um die Behandlung von ++x sowie x++, also das Inkrementieren eines Wertes und den exakten Zeitpunkt, wann genau das stattfindet.

Lass uns das zunächst mal etwas besser aufschreiben, damit das auch deutlich wird:

int y = (++x) + (x++) + (++x);

Dabei kann man sich folgendes merken:

++x: Der Wert wird VOR dem Zugriff um 1 erhöht

x++: Der Wert wird NACH dem Zugriff um 1 erhöht

Dann gehen wir die Aufgabe mal der Reihe nach durch:

int y = ++x

Gemäß unseres Merksatzes wird also x VOR dem Zugriff um 1 erhöht was bedeutet, dass x an dieser Stelle den Wert 11 hat.

int y = ++x +

Hier ist ein ganz normaler Operator um die einzelnen Ergebnisse zu addieren

int y = ++x + x++

x++ bedeutet nach unserem Merksatz, dass der Wert von x erst NACH dem Zugriff um 1 erhöht wird, also hat x zu diesem Zeitpunkt noch den Wert 11.

int y = ++x + x++ +

Hier ist wieder ein normaler Operator um die einzelnen Ergebnisse zu addieren

int y = ++x + x++ + ++x

Das ist nun der tricky Teil: x wird hier VOR dem Zugriff um 1 erhöht, erhält aber durch den Vorgänger (NACH dem Zugriff) noch ein plus 1, sodass x hier den Wert 13 hat! (12 wegen der Erhöhung vorher, 13 wegen der Erhöhung VOR diesem Zugriff).

Dadurch ergibt sich: int y = 11 + 11 + 13 welches in Summe dann 35 ergibt.

Die richtige Lösung lautet also C.

Dies ist ein schönes Beispiel um sich das Thema gut merken zu können und ich bin mir sicher, wenn man das einmal raus hat, ist es auch gar nicht mehr so schwer.

Wie fandest du die Aufgabe? Hast du auf den ersten Blick die richtige Lösung gefunden oder hast du die Step-by-Step Lösung benötigt?

Es wurden noch keine Kommentare verfasst, sei der erste!

Support

Wenn du mich und meine Arbeit unterstützen möchtest, freue ich mich sehr über eine kleine Aufmerksamkeit in Form eines Kaffees ;-)



Weitere Informationen, wie du mich und meine Arbeit unterstützen kannst, findest du hier.