Kontrollstrukturen: Verzweigungen und Schleifen
Jedes Java-Programm muss an manchen Stellen Entscheidungen treffen und Anweisungen wiederholen. Verzweigungen und Schleifen sind die beiden Werkzeuge, mit denen sich der reine Ablauf 'von oben nach unten' steuern lässt — dieses Kapitel legt damit das Grundgerüst für alle folgenden Kapitel.
1.1 Bedingte Anweisungen: if, else und switch
Mit if wird ein Codeblock nur dann ausgeführt, wenn eine boolesche Bedingung wahr ist. Ein optionaler else-Zweig fängt den restlichen Fall auf, und mehrere else if-Zweige erlauben eine Kette sich gegenseitig ausschließender Fälle. Die switch-Anweisung ist eine Alternative, wenn ein einzelner Ausdruck gegen mehrere feste Werte verglichen werden soll — sie ist oft übersichtlicher als eine lange else-if-Kette.
Fallthrough
Ausführung fällt in switch ohne break in den nächsten case-Zweig durch.
Ein häufiger Fehler bei switch ist das vergessene break: Ohne break wird nach einem passenden case-Zweig auch der Code der nachfolgenden case-Zweige ausgeführt ('Fallthrough'), bis entweder ein break erreicht wird oder der switch-Block endet. Das kann absichtlich genutzt werden, um mehrere Werte auf denselben Codepfad zu leiten, führt aber sehr häufig zu unbeabsichtigten Fehlern.
Zwei case-Werte teilen sich bewusst denselben Zweig (Fallthrough bis zum break)
int note = 2;
String text;
switch (note) {
case 1:
case 2:
text = "gut";
break;
case 3:
case 4:
text = "ausreichend";
break;
default:
text = "nicht bestanden";
}
System.out.println(text);1.2 Schleifen: for, while und do-while
Die for-Schleife bündelt Initialisierung, Abbruchbedingung und Update in einer Kopfzeile und eignet sich besonders, wenn die Anzahl der Durchläufe von vornherein bekannt ist (z. B. Zählschleifen). Die while-Schleife prüft die Bedingung vor jedem Durchlauf und eignet sich, wenn die Anzahl der Durchläufe erst zur Laufzeit feststeht. Die do-while-Schleife prüft die Bedingung erst NACH dem ersten Durchlauf — der Schleifenkörper wird also mindestens einmal ausgeführt, unabhängig davon, ob die Bedingung überhaupt je wahr war.
Verschachtelte Schleife
Eine Schleife, deren Körper selbst wieder eine Schleife enthält.
Bei verschachtelten Schleifen (eine Schleife im Körper einer anderen) multipliziert sich die Anzahl der Durchläufe der inneren Schleife mit der Anzahl der Durchläufe der äußeren Schleife. Hängt die Anzahl der inneren Durchläufe zusätzlich vom aktuellen Wert der äußeren Laufvariablen ab (z. B. eine 'Dreieck'-Struktur, bei der die innere Schleife jedes Mal einen Schritt weiter läuft), lässt sich die Gesamtzahl der Durchläufe über die Gaußsche Summenformel berechnen.
Dreiecksmuster: die innere Schleife läuft in Durchlauf i genau i-mal
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println();
}1.3 Kontrollierter Schleifenabbruch: break und continue
break beendet die unmittelbar umschließende Schleife sofort und vollständig — die Programmausführung springt direkt zur ersten Anweisung nach der Schleife. continue dagegen beendet nur den aktuellen Durchlauf: Die restlichen Anweisungen im Schleifenkörper werden übersprungen, aber die Schleife läuft mit dem nächsten Durchlauf ganz normal weiter (bei for wird also zuerst noch das Update ausgeführt, bevor die Bedingung erneut geprüft wird).
Label
Benannte Marke vor einer Schleife, mit der break/continue gezielt eine äußere Schleife ansprechen können.
Bei verschachtelten Schleifen wirken break und continue standardmäßig nur auf die unmittelbar umschließende (innerste) Schleife. Soll eine äußere Schleife direkt verlassen werden, benötigt man in Java eine benannte Marke (label) vor der äußeren Schleife, z. B. äussere: for (...) { ... break äussere; ... } — ein Sprachmittel, das in der Praxis eher selten, aber gelegentlich klausurrelevant ist.
Lineare Suche: break beendet die Schleife, sobald der Wert gefunden wurde
int gesucht = 7;
boolean gefunden = false;
for (int i = 0; i < werte.length; i++) {
if (werte[i] == gesucht) {
gefunden = true;
break;
}
}Einfache Datentypen, Operatoren und Typumwandlung
🔒 GesperrtJede Variable in Java besitzt einen festen Datentyp, der bestimmt, welche Werte sie speichern kann und wie viel Speicher dafür reserviert wird. Dieses Kapitel behandelt die primitiven Datentypen, die wichtigsten Operatoren sowie die Regeln, nach denen Java zwischen Typen konvertiert.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenMethoden: Aufbau, Parameter und Gültigkeitsbereiche
🔒 GesperrtMethoden bündeln wiederkehrende Abläufe unter einem Namen und machen ein Programm dadurch übersichtlicher und wartbarer. Dieses Kapitel behandelt den Aufbau einer Methode, das Überladen mehrerer Methoden mit demselben Namen sowie — als praxisnahen Exkurs — den systematischen Umgang mit Fehlern beim Testen von Methoden.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenRekursive Methoden
🔒 GesperrtEine rekursive Methode löst ein Problem, indem sie sich selbst mit einer kleineren Version desselben Problems aufruft. Dieses Kapitel behandelt den Aufbau rekursiver Methoden, den Vergleich zu iterativen Lösungen sowie ein durchgerechnetes Anwendungsbeispiel mit rekursivem Backtracking.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenReferenzdatentypen: Arrays und Strings
🔒 GesperrtReferenzdatentypen speichern nicht den Wert selbst, sondern eine Referenz (Adresse) auf ein Objekt im Heap-Speicher. Dieses Kapitel behandelt Arrays (Felder) als wichtigsten eingebauten Referenzdatentyp sowie den grundlegenden Unterschied zwischen Stack und Heap, der für das Verständnis von Kopien und Vergleichen zentral ist.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenEinführung in die Objektorientierung
🔒 GesperrtDie objektorientierte Programmierung bündelt Daten (Attribute) und die dazugehörigen Operationen (Methoden) in Klassen. Dieses Kapitel führt die grundlegenden Begriffe Klasse, Objekt und Attribut ein und erklärt den Unterschied zwischen Instanz- und klassenbezogenen Elementen.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenKlassen im Detail: Konstruktoren und Kapselung
🔒 GesperrtDamit ein Objekt in einem sinnvollen Ausgangszustand entsteht und seine Attribute anschließend nicht unkontrolliert von außen verändert werden können, braucht es Konstruktoren und Kapselung. Dieses Kapitel behandelt beides sowie die UML-Notation, mit der sich Klassen grafisch dokumentieren lassen.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenVererbung
🔒 GesperrtVererbung erlaubt es, eine neue Klasse auf Basis einer bereits bestehenden Klasse zu definieren und dabei deren Attribute und Methoden zu übernehmen. Dieses Kapitel behandelt Vererbungshierarchien, das Schlüsselwort super sowie das Überschreiben geerbter Methoden.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenPolymorphismus und besondere Klassen im JDK
🔒 GesperrtPolymorphismus erlaubt es, Objekte unterschiedlicher (aber verwandter) Klassen einheitlich über den Typ ihrer gemeinsamen Oberklasse oder eines gemeinsamen Interfaces zu behandeln. Dieses Kapitel behandelt Polymorphie, abstrakte Klassen und Interfaces sowie die Hüllklassen des JDK für die primitiven Datentypen.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenAusnahmebehandlung
🔒 GesperrtExceptions (Ausnahmen) sind Javas Mechanismus, um auf Fehler und außergewöhnliche Situationen zur Laufzeit kontrolliert zu reagieren, statt das Programm abrupt abstürzen zu lassen. Dieses Kapitel behandelt try/catch/finally sowie die Hierarchie der eingebauten Exception-Klassen und eigene Exception-Typen.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischaltenListen, Bäume und rekursive Datenstrukturen
🔒 GesperrtArrays haben eine feste Länge und sind damit für manche Anwendungen unpraktisch. Verkettete Listen und Bäume sind Datenstrukturen, die aus einzelnen, über Referenzen verbundenen Knoten bestehen und dadurch flexibel wachsen können. Dieses Kapitel behandelt beide Strukturen und ihre Eigenschaften.
Dieses Kapitel gehört zum Modul Programmieren 1: Java und ist nach dem Kauf sofort freigeschaltet.
Modul freischalten