Skip to content

Kapitel 5: Operatoren

🎯 Lernziele

In diesem Kapitel lernst du:

  • Arithmetische Operatoren (+, -, *, /, %, ++, --)
  • Zuweisungsoperatoren (=, +=, -=, *=, /=)
  • Vergleichsoperatoren (>, <, >=, <=, ==, !=)
  • Logische Operatoren (&&, ||, !)
  • Ternärer Operator (Kurzschreibweise für if-else)
  • Operatorpriorität (Reihenfolge der Auswertung)

5.1 Arithmetische Operatoren: + - * / % ++ --

🧮 Grundrechenarten

OperatorBedeutungBeispielErgebnis
+Addition10 + 313
-Subtraktion10 - 37
*Multiplikation10 * 330
/Division10 / 33 (bei int!)
%Modulo (Rest)10 % 31

📋 Beispiel: Arithmetische Operatoren

java
public class ArithmetikBeispiel {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        
        System.out.println("a + b = " + (a + b));  // 13
        System.out.println("a - b = " + (a - b));  // 7
        System.out.println("a * b = " + (a * b));  // 30
        System.out.println("a / b = " + (a / b));  // 3 (Integer-Division!)
        System.out.println("a % b = " + (a % b));  // 1 (Rest)
        
        // Achtung bei Division!
        double c = 10.0;
        double d = 3.0;
        System.out.println("c / d = " + (c / d));  // 3.3333333333333335
    }
}

⚠️ Wichtig: Integer-Division

java
// Achtung!
int ergebnis1 = 10 / 3;   // 3 (Nachkommastellen werden abgeschnitten!)
double ergebnis2 = 10.0 / 3;  // 3.3333333333333335

// Lösung: Casting
double ergebnis3 = (double) 10 / 3;  // 3.3333333333333335

🔢 Inkrement (++) und Dekrement (--)

OperatorBedeutungBeispielErgebnis
++Erhöht um 1x++ oder ++xx = x + 1
--Verringert um 1x-- oder --xx = x - 1

📋 Beispiel: ++ und --

java
public class InkrementBeispiel {
    public static void main(String[] args) {
        int x = 5;
        
        // Post-Inkrement (x++): Wert wird nach der Verwendung erhöht
        System.out.println(x++);  // Gibt 5 aus, dann wird x zu 6
        System.out.println(x);    // 6
        
        // Pre-Inkrement (++x): Wert wird vor der Verwendung erhöht
        x = 5;  // Zurücksetzen
        System.out.println(++x);  // Erhöht x zuerst auf 6, gibt dann 6 aus
        System.out.println(x);    // 6
        
        // Das gleiche für --
        int y = 5;
        System.out.println(y--);  // 5 (dann y = 4)
        System.out.println(--y);  // 3 (erst y = 3, dann ausgeben)
    }
}

5.2 Zuweisungsoperatoren: = += -= *= /=

📝 Einfache Zuweisung (=)

java
int alter = 25;  // Weist 25 der Variable alter zu

🔄 Erweiterte Zuweisungsoperatoren

OperatorBedeutungEntspricht
+=Addition und Zuweisungx = x + 5
-=Subtraktion und Zuweisungx = x - 5
*=Multiplikation und Zuweisungx = x * 5
/=Division und Zuweisungx = x / 5
%=Modulo und Zuweisungx = x % 5

📋 Beispiel: Erweiterte Zuweisungsoperatoren

java
public class ZuweisungsBeispiel {
    public static void main(String[] args) {
        int x = 10;
        
        x += 5;  // x = x + 5 → x = 15
        System.out.println(x);  // 15
        
        x -= 3;  // x = x - 3 → x = 12
        System.out.println(x);  // 12
        
        x *= 2;  // x = x * 2 → x = 24
        System.out.println(x);  // 24
        
        x /= 4;  // x = x / 4 → x = 6
        System.out.println(x);  // 6
        
        x %= 4;  // x = x % 4 → x = 2
        System.out.println(x);  // 2
    }
}

5.3 Vergleichsoperatoren: > < >= <= == !=

⚖️ Vergleichsoperatoren (liefern boolean)

OperatorBedeutungBeispielErgebnis
>Größer als10 > 3true
<Kleiner als10 < 3false
>=Größer oder gleich10 >= 10true
<=Kleiner oder gleich10 <= 5false
==Gleichheit10 == 10true
!=Ungleichheit10 != 5true

📋 Beispiel: Vergleichsoperatoren

java
public class VergleichBeispiel {
    public static void main(String[] args) {
        int alter = 20;
        int volljaehrigkeitsgrenze = 18;
        
        System.out.println(alter > volljaehrigkeitsgrenze);   // true
        System.out.println(alter >= volljaehrigkeitsgrenze);  // true
        System.out.println(alter < volljaehrigkeitsgrenze);   // false
        System.out.println(alter <= volljaehrigkeitsgrenze);  // false
        System.out.println(alter == volljaehrigkeitsgrenze);   // false
        System.out.println(alter != volljaehrigkeitsgrenze);   // true
    }
}

⚠️ Wichtig: == vs. =

java
int a = 5;
int b = 5;

// Achtung!
System.out.println(a = b);  // Weist b zu a zu, gibt 5 aus (Falsch!)
System.out.println(a == b); // Vergleicht a und b, gibt true aus (Richtig!)

5.4 Logische Operatoren: && || !

🔗 Logische Operatoren (für Bedingungen)

OperatorBedeutungBeispielErgebnis
&&UND (beide müssen wahr sein)true && falsefalse
``ODER (mindestens einer muss wahr sein)
!NICHT (Negation)!truefalse

📋 Wahrheitstabellen

UND (&&):

ABA && B
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

ODER (||):

ABA || B
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

NICHT (!):

A!A
truefalse
falsetrue

📋 Beispiel: Logische Operatoren

java
public class LogikBeispiel {
    public static void main(String[] args) {
        int alter = 25;
        boolean hatFuehrerschein = true;
        
        // Beispiel 1: UND (&&)
        // Darf Auto fahren? Alter >= 18 UND hat Führerschein
        boolean darfAutoFahren = (alter >= 18) && hatFuehrerschein;
        System.out.println("Darf Auto fahren: " + darfAutoFahren);  // true
        
        // Beispiel 2: ODER (||)
        // Rabatt berechtigt? Alter >= 65 ODER Alter <= 18
        boolean rabattBerechtigt = (alter >= 65) || (alter <= 18);
        System.out.println("Rabatt berechtigt: " + rabattBerechtigt);  // false
        
        // Beispiel 3: NICHT (!)
        boolean istMinderjaehrig = !(alter >= 18);
        System.out.println("Ist minderjährig: " + istMinderjaehrig);  // false
    }
}

⚡ Kurzschluss-Auswertung (Short-Circuit Evaluation)

java
// &&: Wenn der erste Teil false ist, wird der zweite nicht mehr geprüft
int x = 5;
boolean ergebnis1 = (x < 0) && (x++ > 0);  // x < 0 ist false, x++ wird nicht ausgeführt!
System.out.println(x);  // 5 (x wurde nicht erhöht!)

// ||: Wenn der erste Teil true ist, wird der zweite nicht mehr geprüft
int y = 5;
boolean ergebnis2 = (y > 0) || (y++ > 0);  // y > 0 ist true, y++ wird nicht ausgeführt!
System.out.println(y);  // 5 (y wurde nicht erhöht!)

5.5 Ternärer Operator (Bedingungsoperator)

🎯 Syntax

java
// Syntax: bedingung ? wertWennTrue : wertWennFalse

// Beispiel
int alter = 20;
String status = (alter >= 18) ? "Volljährig" : "Minderjährig";
System.out.println(status);  // "Volljährig"

📋 Beispiel: Ternärer Operator

java
public class TernaererBeispiel {
    public static void main(String[] args) {
        int punkte = 75;
        
        // Mit if-else
        String status1;
        if (punkte >= 60) {
            status1 = "Bestanden";
        } else {
            status1 = "Nicht bestanden";
        }
        System.out.println(status1);  // "Bestanden"
        
        // Mit ternärem Operator (kürzer!)
        String status2 = (punkte >= 60) ? "Bestanden" : "Nicht bestanden";
        System.out.println(status2);  // "Bestanden"
        
        // Noch ein Beispiel: Maximum von zwei Zahlen finden
        int a = 10;
        int b = 20;
        int maximum = (a > b) ? a : b;
        System.out.println("Maximum: " + maximum);  // 20
    }
}

5.6 Operatorpriorität (Reihenfolge der Auswertung)

📊 Operatorpriorität (von hoch nach niedrig)

PrioritätOperatorBedeutung
1()Klammern
2!, ++, --Logisches NICHT, Inkrement, Dekrement
3*, /, %Multiplikation, Division, Modulo
4+, -Addition, Subtraktion
5>, <, >=, <=Vergleichsoperatoren
6==, !=Gleichheit, Ungleichheit
7&&Logisches UND
8`
9=, +=, -=, etc.Zuweisungsoperatoren

📋 Beispiel: Operatorpriorität

java
public class PrioritaetBeispiel {
    public static void main(String[] args) {
        int ergebnis1 = 10 + 5 * 2;  // 10 + (5 * 2) = 20 (nicht 30!)
        System.out.println(ergebnis1);  // 20
        
        int ergebnis2 = (10 + 5) * 2;  // (10 + 5) * 2 = 30 (Klammern ändern Priorität!)
        System.out.println(ergebnis2);  // 30
        
        boolean ergebnis3 = true || false && false;  // true || (false && false) = true
        System.out.println(ergebnis3);  // true
        
        // Klammern machen es deutlicher!
        boolean ergebnis4 = (true || false) && false;  // (true) && false = false
        System.out.println(ergebnis4);  // false
    }
}

💡 Empfehlung: Klammern verwenden!

Auch wenn du die Operatorpriorität kennst, nutze Klammern, um den Code lesbarer zu machen:

java
// Schwer zu lesen
boolean ergebnis = a > b && c != d || e <= f;

// Besser lesbar mit Klammern
boolean ergebnis = ((a > b) && (c != d)) || (e <= f);

📝 Zusammenfassung

In diesem Kapitel hast du gelernt:

  • ✅ Arithmetische Operatoren (+, -, *, /, %, ++, --)
  • ✅ Zuweisungsoperatoren (=, +=, -=, *=, /=)
  • ✅ Vergleichsoperatoren (>, <, >=, <=, ==, !=)
  • ✅ Logische Operatoren (&&, ||, !)
  • ✅ Ternärer Operator (Kurzschreibweise für if-else)
  • ✅ Operatorpriorität (Reihenfolge der Auswertung)

💡 Merksatz für Anfänger

"Bei Zweifeln über die Reihenfolge: Klammern setzen! Das macht den Code lesbarer und verhindert Fehler."

🎯 Nächste Schritte

Im nächsten Kapitel lernst du:

  • Bedingte Anweisungen (if, else, switch) (Kapitel 6)
  • Wie man Code nur unter bestimmten Bedingungen ausführt
  • Wie man zwischen verschiedenen Optionen wählt

Bereit für Entscheidungen? Los geht's! 🚀


📚 Weiterführende Links:

💬 Fragen?
Hinterlasse einen Kommentar!

Frei für alle Anfänger