magicmarcy.de | Tricky Java #1

Tricky Java #1

Java Tricky • 13. Mai 2025 • Lesezeit: 3 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?

Ich schreibe diese Beiträge in meiner Freizeit und freue mich über jede Unterstützung. Wenn du magst, kannst du mir auf Ko-Fi einen Kaffee spendieren. Danke! ♥️

Es wurden noch keine Kommentare verfasst, sei der erste!
Über
Avatar

Hi, ich bin Marcel!
Als Fachinformatiker für Anwendungsentwicklung und IHK-geprüfter Ausbilder teile ich auf meinem Blog Grundlagen- und Fortgeschrittenen-Wissen für angehende Entwickler*innen und Interessierte, sowie weitere spannende Themen aus der IT.

Blog Aktivität

Sep
 
 
 
Oct
 
 
 
Nov
 
 
 
Dec
 
Mon
Wed
Fri