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.
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 |
|---|---|---|---|
| Ganzzahl | byte | 8-Bit | -128 bis 127 |
| Ganzzahl | short | 16-Bit | -32.768 bis 32.767 |
| Ganzzahl | int | 32-Bit | ca. ±2 Mrd. (Standard) |
| Ganzzahl | long | 64-Bit | Sehr große Zahlen (Suffix L) |
| Gleitkomma | float | 32-Bit | Einfache Genauigkeit (Suffix f) |
| Gleitkomma | double | 64-Bit | Doppelte Genauigkeit (Standard) |
| Zeichen | char | 16-Bit | Einzelnes Unicode-Zeichen (z.B. 'A') |
| Wahrheitswert | boolean | - | 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, istStringeine 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.
bytevs.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 einerif-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:
- Erstelle ein kurzes Java-Programm, das zwei Integer-Variablen (
zahl1,zahl2) deklariert und initialisiert. - Verwende eine
if-else if-else-Struktur, um zu prüfen, obzahl1größer, kleiner oder gleichzahl2ist, und gib das entsprechende Ergebnis auf der Konsole aus. - Füge eine
switch-Anweisung hinzu, die einenchar-Datentyp (operator) verwendet, um einfache arithmetische Operationen (+,-,*,/) aufzahl1undzahl2ausführt und das Ergebnis ausgibt. Berücksichtige einendefault-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