Datentypen & Bedingungen

Was du heute lernst:

  • Primitive Datentypen und Referenzdatentypen voneinander unterscheiden.
  • Die Syntax und Logik von Kontrollstrukturen (if-else, switch) in Java anwenden.
  • Den Programmfluss basierend auf logischen Bedingungen steuern.

Variablen und Programmfluss

Jedes Programm benötigt Daten, die verarbeitet werden, und eine Logik, die entscheidet, welcher Code unter welchen Umständen ausgeführt wird. Das Verständnis von Datentypen und Bedingungen ist daher die Grundlage jeder Softwareentwicklung.

Merksatz: Datentypen definieren die Art und den Wertebereich von Informationen, während Bedingungen den Programmfluss durch logische Entscheidungen steuern.

Datentypen

Java unterscheidet primär zwischen primitiven Datentypen (direkte Werte) und Referenzdatentypen (Verweise auf Objekte).

Übersicht der primitiven Datentypen

Kategorie Typ Größe Wertebereich / Verwendung
Ganzzahlbyte8-Bit-128 bis 127
Ganzzahlshort16-Bit-32.768 bis 32.767
Ganzzahlint32-Bitca. ±2 Mrd. (Standard)
Ganzzahllong64-BitSehr große Zahlen (Suffix L)
Gleitkommafloat32-BitEinfache Genauigkeit (Suffix f)
Gleitkommadouble64-BitDoppelte Genauigkeit (Standard)
Zeichenchar16-BitEinzelnes Unicode-Zeichen (z.B. 'A')
Wahrheitswertboolean-true oder false

Referenzdatentypen

Diese speichern Referenzen (Adressen) auf Objekte im Speicher. Beispiele sind Klassen, Interfaces, Arrays und String.

  • String: Eine Klasse zur Darstellung von Zeichenketten (z.B. "Hallo Welt"). Obwohl oft wie ein primitiver Typ verwendet, ist String eine Klasse.
  • Arrays: Geordnete Sammlungen von Elementen desselben Typs.

Bedingungen (Kontrollstrukturen)

Bedingungen steuern den Programmfluss basierend auf dem Ergebnis von Ausdrücken, die zu einem boolean-Wert evaluiert werden (true oder false).

if-Anweisung

Führt einen Codeblock aus, wenn eine Bedingung true ist.

if (bedingung) {
    // Code, der ausgeführt wird, wenn die Bedingung wahr ist
}

if-else-Anweisung

Führt einen Codeblock aus, wenn die Bedingung true ist, und einen anderen, wenn sie false ist.

if (bedingung) {
    // Code für den wahren Fall
} else {
    // Code für den falschen Fall
}

if-else if-else-Kette

Für multiple Bedingungen, die sequentiell geprüft werden.

if (bedingung1) {
    // Code, wenn bedingung1 wahr ist
} else if (bedingung2) {
    // Code, wenn bedingung2 wahr ist
} else {
    // Code, wenn keine der Bedingungen wahr ist
}

switch-Anweisung

Eine Alternative zu langen if-else if-Ketten für Fälle, in denen ein einziger Ausdruck mit mehreren konstanten Werten verglichen wird. Funktioniert mit byte, short, char, int, deren Wrapper-Typen, enums und String.

switch (ausdruck) {
    case wert1:
        // Code für wert1
        break; // Wichtig: beendet den switch-Block
    case wert2:
        // Code für wert2
        break;
    default:
        // Code, wenn kein Fall zutrifft (optional)
}

Ab Java 14 können auch switch-Ausdrücke verwendet werden, die einen Wert zurückgeben.

Praxisbeispiel

public class DatenUndBedingungen {
    public static void main(String[] args) {
        // Beispiel für primitive Datentypen
        int alter = 30;
        double preis = 19.99;
        char initial = 'J';
        boolean istStudent = true;
        String name = "Max Mustermann"; // Referenztyp

        System.out.println("Name: " + name);
        System.out.println("Alter: " + alter);
        System.out.println("Preis: " + preis);
        System.out.println("Initial: " + initial);
        System.out.println("Ist Student: " + istStudent);

        // Beispiel für Bedingungen (if-else if-else)
        if (alter < 18) {
            System.out.println(name + " ist minderjährig.");
        } else if (alter >= 18 && alter < 65) {
            System.out.println(name + " ist erwachsen.");
        } else {
            System.out.println(name + " ist Senior.");
        }

        // Beispiel für switch-Anweisung
        int tagDerWoche = 3; // 1 = Montag, 2 = Dienstag, ...
        String tag;

        switch (tagDerWoche) {
            case 1:
                tag = "Montag";
                break;
            case 2:
                tag = "Dienstag";
                break;
            case 3:
                tag = "Mittwoch";
                break;
            case 4:
                tag = "Donnerstag";
                break;
            case 5:
                tag = "Freitag";
                break;
            case 6:
                tag = "Samstag";
                break;
            case 7:
                tag = "Sonntag";
                break;
            default:
                tag = "Ungültiger Tag";
        }
        System.out.println("Heute ist: " + tag);
    }
}

Offene Fragen / Vertiefung

  • Welche Auswirkungen hat die Wahl eines bestimmten Ganzzahl-Datentyps (z.B. byte vs. int) auf die Speicherbelegung und Leistungsfähigkeit des Programms?
  • Wie unterscheiden sich primitive Datentypen von Referenzdatentypen in Bezug auf Speicherung und Übergabe an Methoden?
  • Wann ist die Verwendung einer switch-Anweisung der einer if-else if-Kette vorzuziehen?
  • Welche weiteren Operatoren (logische, Vergleichsoperatoren) sind wichtig für die Formulierung von Bedingungen in Java?
  • Recherche zu Wrapper-Klassen für primitive Datentypen (z.B. Integer, Double).

Übungsaufgabe: Datentypen und Bedingungen in Java anwenden

Aufgabenstellung:

  1. Erstelle ein kurzes Java-Programm, das zwei Integer-Variablen (zahl1, zahl2) deklariert und initialisiert.
  2. Verwende eine if-else if-else-Struktur, um zu prüfen, ob zahl1 größer, kleiner oder gleich zahl2 ist, und gib das entsprechende Ergebnis auf der Konsole aus.
  3. Füge eine switch-Anweisung hinzu, die einen char-Datentyp (operator) verwendet, um einfache arithmetische Operationen (+, -, *, /) auf zahl1 und zahl2 ausführt und das Ergebnis ausgibt. Berücksichtige einen default-Fall für ungültige Operatoren.

Hinweise zur Lösung: Achte auf korrekte Syntax und die Verwendung der richtigen Vergleichs- und logischen Operatoren. Denke daran, break-Statements in der switch-Anweisung zu verwenden.

Schwierigkeitsgrad: mittel

Erwartete Bearbeitungszeit: 45 Minuten


Nächster Schritt

Nachdem wir Daten speichern und einfache Entscheidungen treffen können, lernen wir nun, wie wir Aufgaben automatisiert wiederholen.

Weiter zu: Schleifen und Arrays →