Java lernen: Grundlagen und Objektorientierung
Java ist eine objektorientierte Programmiersprache. Du schreibst Quellcode, lässt ihn in Bytecode übersetzen und startest ihn in einer passenden Java-Umgebung. Für den Einstieg reichen kleine Programme: So lernst du, Daten zu speichern, Entscheidungen zu treffen, Wiederholungen zu steuern und Objekte mit geschütztem Zustand zu bauen.
Hake ab, was du schon kannst — und komm am Ende hierher zurück!
Vom Quelltext zur Ausgabe
Du möchtest den Text „Hallo Welt!“ ausgeben. Dieses vollständige Einführungsprogramm genügt:
java public class HelloWorld { public static void main(String[] args) { System.out.println("Hallo Welt!"); } }
class HelloWorldbeschreibt eine Klasse. Die geschweiften Klammern begrenzen ihren Inhalt.mainist hier der Startpunkt.staticbedeutet, dass Java die Methode ohne vorher erzeugtesHelloWorld-Objekt aufrufen kann.voidzeigt an, dass die Methode keinen Wert zurückgibt.System.out.println(...)schreibt eine Zeile auf die Konsole. Das Semikolon beendet die Anweisung.
Speichere das Beispiel als HelloWorld.java. Dann besteht der Ablauf aus zwei Schritten:
text javac HelloWorld.java java HelloWorld
javac kompiliert den Quellcode und erzeugt HelloWorld.class. Der zweite Befehl startet die Klasse ohne Dateiendung.
Syntaxfehler
Ein Syntaxfehler verletzt die Schreibregeln der Sprache, etwa durch eine fehlende Klammer oder ein fehlendes Semikolon. Der Compiler kann daraus keinen gültigen Bytecode erzeugen.
Bug
Ein Bug ist ein Fehler im Verhalten. Das Programm kann gültig sein und laufen, aber trotzdem etwas anderes tun als beabsichtigt.
Daten speichern und Entscheidungen treffen
Eine Variable verbindet einen Namen mit einem Wert. Ihr Datentyp legt fest, welche Art von Wert sie aufnehmen kann.
java int alter = 16; double temperatur = 21.5; boolean volljaehrig = false; String name = "Mira";
int speichert ganze Zahlen, double Fließkommazahlen und boolean genau true oder false. String steht für eine Zeichenkette. Deshalb ist "789" Text und nicht die Zahl 789.
Mit einer Bedingung wählt das Programm einen von mehreren Wegen:
java if (alter >= 18) { System.out.println("volljährig"); } else { System.out.println("minderjährig"); }
Vergleiche können prüfen, ob Werte größer, kleiner, gleich oder ungleich sind. Sie ergeben einen Wahrheitswert. Mehrere Bedingungen lassen sich mit && für UND, || für ODER und ! für NICHT verbinden.
Vergleiche den Inhalt von Strings mit equals, zum Beispiel name.equals("Mira"). Nutze dafür nicht ==.
Das folgende Programmstück prüft zwei Dinge: Der Name muss passen und das Alter muss mindestens 16 sein.
java if (name.equals("Mira") && alter >= 16) { System.out.println("Zugang erlaubt"); }
Die Ausgabe erfolgt nur, wenn beide Teilbedingungen true sind. Genau das verlangt der UND-Operator &&.
Werte wiederholen, sammeln und zerlegen
Eine Schleife wiederholt Anweisungen. Ein Array sammelt mehrere Werte desselben Datentyps. Eine Methode bündelt einen benannten Arbeitsschritt.
```java static int summePositive(int[] zahlen) { int summe = 0;
for (int i = 0; i != zahlen.length; i++) { if (zahlen[i] > 0) { summe = summe + zahlen[i]; } }
return summe; } ```
Die Methode hat den Rückgabetyp int und erhält ein int-Array als Parameter. Die Schleifenvariable i beginnt bei 0, weil der erste Arrayindex 0 ist. Sie läuft bis unmittelbar vor zahlen.length: Bei einem Array mit drei Elementen sind nur die Indizes 0, 1 und 2 gültig.
Für das Array {5, -2, 7} arbeitet die Methode so:
- Sie startet mit
summe = 0. - Sie addiert
5, überspringt-2und addiert7. - Sie gibt mit
returnden Wert12zurück.
Der entscheidende Gedanke ist nicht die Addition allein: Die if-Bedingung filtert vorher alle nicht positiven Werte aus.
Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.
Der erste Index eines Arrays ist . Bei Startwert 0 und Erhöhung um 1 bleibt die Schleife mit innerhalb des Arrays. Eine Methode mit Rückgabewert liefert ihr Ergebnis mit zurück.
length. Die Schleife endet deshalb, sobald i der Arraylänge entspricht.0; Lücke 2: i != zahlen.length; Lücke 3: return. Der letzte gültige Index liegt immer eins unter length. Die Schleife endet deshalb, sobald i der Arraylänge entspricht.Klassen, Objekte und gekapselten Zustand bauen
Eine Klasse ist ein Bauplan. Ein Objekt ist eine konkrete Instanz dieses Bauplans. Attribute speichern seinen Zustand, Methoden beschreiben sein Verhalten.
```java class Auto { private String marke; private boolean an;
Auto(String marke) { this.marke = marke; }
public void starte() { an = true; }
public boolean istAn() { return an; } } ```
private schützt die Attribute vor direktem Zugriff aus anderen Klassen. Zustandsänderungen laufen hier über öffentliche Methoden. Das nennt man Kapselung: Die Klasse kontrolliert selbst, wie ihr Zustand gelesen oder verändert wird.
Der Konstruktor Auto(String marke) trägt denselben Namen wie die Klasse und hat keinen Rückgabetyp. Er erhält den Startwert. this.marke bezeichnet das Attribut des aktuellen Objekts; marke bezeichnet hier den Parameter.
So entstehen zwei eigenständige Objekte:
```java Auto auto1 = new Auto("Mini"); Auto auto2 = new Auto("VW");
auto1.starte(); System.out.println(auto1.istAn()); System.out.println(auto2.istAn()); ```
Beide Objekte folgen demselben Bauplan, besitzen aber eigenen Zustand. Der Aufruf auto1.starte() verändert nur auto1.
Sobald du selbst einen Konstruktor mit Parametern definierst, stellt Java nicht zusätzlich automatisch einen parameterlosen Konstruktor bereit. Soll auch new Auto() möglich sein, musst du Auto() { } ausdrücklich ergänzen.
Vom Beispiel zur eigenen Lösung
Eine fertige Lösung zu verstehen ist ein Anfang. Sicher anwenden kannst du sie erst, wenn du den Denkweg auf eine veränderte Aufgabe überträgst.
Gehe bei kleinen Java-Aufgaben so vor:
- Formuliere die gewünschte Eingabe und Ausgabe.
- Zerlege die Aufgabe in eindeutige Teilschritte.
- Wähle für jeden Schritt eine passende Struktur: Bedingung, Schleife, Array, Methode oder Klasse.
- Schreibe zuerst einen kleinen vollständigen Fall.
- Kompiliere und behebe Syntaxfehler.
- Teste normale Fälle und Randfälle gegen das gewünschte Verhalten.
Aufgabe: Schreibe eine Methode, die prüft, ob eine ganze Zahl gerade ist.
java static boolean istGerade(int zahl) { return zahl % 2 == 0; }
% liefert den Rest einer Division. Die Methode prüft, ob beim Teilen durch 2 der Rest 0 bleibt. Sie gibt deshalb einen Wahrheitswert zurück.
Aussagekräftige Namen, gleichmäßige Einrückung und maßvolle Kommentare helfen beim Prüfen. Ein Kommentar soll den Zweck oder einen nicht offensichtlichen Gedanken erklären, nicht jede sichtbare Codezeile wiederholen.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- Java
- Quellcode wird kompiliert und anschließend gestartet
- Variablen und Strings speichern Werte
- Bedingungen und Schleifen steuern den Ablauf
- Arrays sammeln Werte und Methoden zerlegen Aufgaben
- Klassen erzeugen Objekte mit eigenem Zustand
- Kapselung schützt Zustand durch klare Schnittstellen
- Tests unterscheiden Syntaxfehler von Bugs
Mit Google fortfahren