Wie Java funktioniert

8

# So beginnen Sie mit der Programmierung in Java: Ein Leitfaden für Anfänger**Java-Programmierung** wird oft als steiler Aufstieg für Anfänger angesehen, aber die Logik dahinter ist überraschend einfach. Egal, ob Sie ein Teenager sind, der sein erstes Videospiel bauen möchte, oder ein Rentner, der endlich seine seit Jahrzehnten gehegte Neugier an den Tag legt, die Eintrittsbarriere ist niedriger als Sie denken. Wir werden die Komplexität beseitigen und uns ansehen, wie Computerprogramme tatsächlich funktionieren, indem wir lernen, in Java zu programmieren.In diesem Leitfaden wird davon ausgegangen, dass Sie in Bezug auf Programmierkenntnisse bei Null anfangen. Wenn Sie bereits über C++ oder Python verfügen, werden Ihnen die Grundlagen hier wie eine Auffrischung vorkommen, Sie können also gerne weiterlesen. Wir gehen davon aus, dass Sie wissen, wie man auf einer Computeroberfläche navigiert – Dateien bearbeiten, Daten verschieben und Ordner verwalten. Wir gehen außerdem von einer Windows-Umgebung (95 bis XP) aus, obwohl sich die Konzepte leicht auf macOS oder Linux übertragen lassen, wenn Sie einen anderen Computer verwenden.Das Beste daran? Sie müssen keinen Cent ausgeben. Die zum Schreiben von Java-Code erforderlichen Tools sind kostenlos, in Hülle und Fülle online verfügbar und werden von großen Bildungsgemeinschaften unterstützt. Sobald Sie Java beherrschen, wird das Erlernen anderer Sprachen erheblich einfacher. Es ist ein solides Fundament.Bevor wir ein einzelnes Tool herunterladen, klären wir zunächst den Wortschatz. Verwirrung entsteht oft dadurch, dass der Code, den Sie schreiben, mit dem Code verwechselt wird, der auf dem Computer ausgeführt wird.### Was ist ein Computerprogramm?Im Kern ist ein **Computerprogramm** nur eine Liste von Anweisungen. Es sagt der Maschine genau, was als nächstes zu tun ist. Betrachten Sie es wie ein Rezept für einen Koch oder ein Notenblatt für einen Musiker. Der Computer errät nicht; Es folgt Ihren Anweisungen genau.Bei diesen Anweisungen kann es sich um das Addieren einer Zahlenspalte, den Vergleich zweier Werte zur Entscheidungsfindung oder das Rendern von Grafiken auf einem Bildschirm handeln. Das Endergebnis kann alles sein, von einem ausgewogenen Scheckbuch bis hin zu einem komplexen Textverarbeitungsprogramm. Die wichtigste Erkenntnis ist, dass das Programm der Befehlssatz ist. Der Computer ist lediglich der Ausführende.### Die Rolle einer ProgrammierspracheComputer verstehen kein Englisch (oder Java oder Python). Sie verstehen Maschinencode – eine binäre Sprache aus Einsen und Nullen. Um diese Lücke zu schließen, verwenden Menschen **Programmiersprachen**.Es gibt Dutzende davon, von älteren Standards wie Fortran und Cobol bis hin zu modernen Favoriten wie C++, Perl und Java. Sie alle drücken ähnliche logische Konzepte aus, jedoch mit unterschiedlicher Syntax und unterschiedlichen Regeln. Für dieses Handbuch wurde Java ausgewählt, weil es weit verbreitet ist, streng typisiert ist (was hilft, Fehler frühzeitig zu erkennen) und auf fast jedem Gerät läuft.### Den Compiler verstehenHier wird es technisch. Sie schreiben Ihren Code in Java, das **für Menschen lesbar** ist. Der Computer kann das nicht direkt ausführen. Es braucht einen Übersetzer.Dieser Übersetzer wird **Compiler** genannt.Der Compiler nimmt Ihren Java-Code und konvertiert ihn in **Maschinencode** (oft als „.exe“-Dateien unter Windows bezeichnet). Dieses maschinenlesbare Format ist das, was der Prozessor tatsächlich ausführt. Ohne Compiler ist Ihr Code nur eine Textdatei, die auf Ihrer Festplatte liegt und nichts tut.### Vorbereitung zum CodierenUm Java zu schreiben, benötigen Sie einen Java-Compiler. Der nächste Schritt besteht darin, die erforderliche Software herunterzuladen und zu installieren. Dieser Vorgang kann einige Zeit in Anspruch nehmen, vor allem weil große Dateien heruntergeladen werden müssen. Sie müssen außerdem sicherstellen, dass mindestens **40 Megabyte** freier Speicherplatz verfügbar sind.Warum sich mit der Einrichtung beschäftigen? Denn sobald Sie den Compiler haben, können Sie erstellen. Sie können abstrakte Logik in greifbare Software umwandeln. Es ist eine Fähigkeit, die sich auszahlt, wenn man versteht, wie die digitale Welt funktioniert.> Ein Computerprogramm ist einfach eine Reihe von Anweisungen für den Computer. Der Computer folgt genau Ihren Anweisungen und tut dabei etwas Nützliches.Die Tools sind kostenlos. Die Community ist riesig. Die Logik ist universell. Jetzt müssen Sie nur noch mit dem Tippen beginnen.# Einrichten der Java 1.4.2-EntwicklungsumgebungUm einen Java-Compiler zum Laufen zu bringen, müssen Sie nicht nur auf „Weiter“ klicken. Es erfordert eine bestimmte Reihenfolge von Downloads, Installationen und Systemoptimierungen. Wenn Sie Java-Programme schreiben möchten, benötigen Sie eine funktionierende Entwicklungsumgebung. Das bedeutet, dass man sich mit großen Dateien, Archivierungstools und Umgebungsvariablen auseinandersetzen muss.Der Prozess ist unkompliziert, verzeiht jedoch keine übersprungenen Schritte. Sie benötigen das SDK, die Dokumentation und die Tools zum Entpacken. Auf älteren Windows-Systemen war das oft WinZip. Bei modernen Setups funktioniert jedes Dekomprimierungstool, aber die Logik bleibt dieselbe.Erstellen Sie zunächst einen temporären Ordner. Nennen Sie es das **Download-Verzeichnis**. Dadurch bleiben die riesigen Dateien von Ihrem Systemgewirr getrennt.### Schritt 1: Besorgen Sie sich das SDKGehen Sie zur offiziellen Download-Seite. Für Java 1.4.2 suchen Sie nach dem SDK. Klicken Sie auf den Link. Akzeptieren Sie die Lizenzvereinbarung. Es handelt sich um eine normale rechtliche Hürde, nicht um eine technische. Wählen Sie Ihr Betriebssystem aus. Laden Sie die Datei in den von Ihnen erstellten temporären Ordner herunter.Seien Sie gewarnt: Dies ist eine riesige Datei. Wenn Sie immer noch ein DFÜ-Modem verwenden, kochen Sie Tee. Es wird Stunden dauern. Die Dokumentationsdatei ist nicht viel kleiner.### Schritt 2: Laden Sie die Dokumente herunterSie benötigen das Referenzmaterial. Klicken Sie auf den Link für die SDK 1.4.1-Dokumentation. Wählen Sie erneut Ihr Betriebssystem aus. Laden Sie es in dasselbe Verzeichnis herunter.### Schritt 3: Umgang mit dem ArchivierungstoolHast du WinZip installiert? Wenn nicht, brauchen Sie es. Java-Archive liegen im „.zip“-Format vor. Sie können sie nicht mit Notepad lesen. Gehen Sie zur WinZip-Site. Laden Sie eine Testversion herunter. Führen Sie die ausführbare Datei aus. Installieren Sie es.Sie benötigen dieses Tool, um die Dokumentation später zu entpacken. Überspringen Sie das nicht.### Schritt 4: Installieren Sie das Development KitSuchen Sie die Datei „j2sdk-1_4_1-*.exe“, die Sie in Schritt 1 heruntergeladen haben. Doppelklicken Sie darauf. Der Installer entpackt das Kit automatisch. Die Dateien werden dort abgelegt, wo sie gespeichert werden sollen. Beachten Sie diesen Pfad. Sie werden es später brauchen.### Schritt 5: Installieren Sie die DokumentationDie Dokumente verfügen über kein eigenes Installationsprogramm. Sie müssen sie manuell platzieren. Lesen Sie die Anweisungen, die dem Download beiliegen. Sie werden aufgefordert, die Dokumentationsdatei in dasselbe Verzeichnis zu verschieben, in dem Sie das Entwicklungskit installiert haben.Entpacken Sie es. Die Dateien werden in der richtigen Struktur abgelegt.### Schritt 6: Umgebungsvariablen anpassenHier bleiben die meisten Menschen stecken. Sie müssen die Variable „PATH“ aktualisieren. Dadurch wird Ihrem Computer mitgeteilt, wo sich der Befehl „javac“ befindet.Öffnen Sie eine MS-DOS-Eingabeaufforderung. Geben Sie „PFAD“ ein. Sehen Sie, was bereits da ist? Öffnen Sie nun „autoexec.bat“ im Notepad. Fügen Sie das Java-bin-Verzeichnis zu diesem Pfad hinzu, genau wie in den Anweisungen angegeben. Speichern Sie die Datei. Starten Sie Ihren Computer neu, damit die Änderungen wirksam werden.Wenn Sie ein Zeichen verpassen, funktioniert der Compiler nicht.### Schritt 7: Testen Sie das SetupÖffnen Sie ein neues MS-DOS-Fenster. Geben Sie „javac“ ein. Drücken Sie die Eingabetaste.Wenn es funktioniert, sehen Sie einen zweizeiligen Textblock, der die Verwendung des Compilers erklärt. Das heißt, Sie sind bereit.Wenn Sie „Ungültiger Befehl oder Dateiname“ sehen, haben Sie versagt. Der Weg ist falsch. Geh zurück. Lesen Sie die Anweisungen noch einmal. Überprüfen Sie „autoexec.bat“. Seien Sie hartnäckig. Es ist eine Debugging-Übung, bevor Sie überhaupt Code geschrieben haben.### Warum das wichtig istSie haben jetzt eine Maschine, die Java kompilieren kann. Sie sind bereit, Software zu schreiben.Im Installationsordner finden Sie ein „Demo“-Verzeichnis. Es ist voller Beispiele. Sie sind bereit zu laufen. Suchen Sie nach Dateien wie „example1.html“. Laden Sie sie in Ihren Webbrowser.Viele von ihnen machen Geräusche. Schalten Sie Ihre Lautsprecher ein.Das ist nicht nur Theorie. Sie interagieren mit der Plattform. Der Compiler funktioniert. Die Umgebung ist konfiguriert.Aber das Setup ist nur die halbe Miete. Das Schreiben des Codes ist das andere. Und der Code muss perfekt sein. Ein fehlendes Semikolon macht alles kaputt.## Ihr erstes Programm# Erstellen Sie Ihr erstes Java-Applet: Eine Schritt-für-Schritt-AnleitungDie Reise beginnt mit etwas Einfachem. Eine Leinwand. Eine Linie. Das ist alles, was wir brauchen, um anzufangen.Sie werden einen Zeichenbereich erstellen. Dann zeichnen Sie eine diagonale Linie darüber. Es klingt trivial, aber dieser Prozess vermittelt Ihnen die Kernmechanismen des Kompilierens und Ausführens von Java-Code in einem Webkontext. Hier ist der Arbeitsablauf:1. Öffnen Sie den Editor.
2. Geben Sie den Code ein.
3. Speichern Sie es als **FirstApplet.java**.
4. Kompilieren Sie es mit „javac“.
5. Erstellen Sie einen HTML-Wrapper.
6. Führen Sie es aus.Hier ist der Quellcode, den Sie manuell eingeben müssen. Kopieren Sie nicht und fügen Sie sie nicht ein, wenn Sie die Syntax lernen möchten.„Java
import java.awt.Graphics;öffentliche Klasse FirstApplet erweitert java.applet.Applet {
Farbe für öffentliche Hohlräume (Grafiken g) {
g.drawLine(0, 0, 200, 200);
}
}
„### Schritt 1: Code eingebenErstellen Sie zunächst einen eigenen Ordner. Speichern Sie dies nicht auf Ihrem Desktop oder in einem zufälligen temporären Ordner. Erstellen Sie ein sauberes Verzeichnis.Öffnen Sie den Editor. Oder verwenden Sie einen beliebigen Texteditor, der einfache „.txt“-Dateien speichert.Geben Sie den Code oben ein. Jeder Charakter ist wichtig.**Die Beachtung der Groß-/Kleinschreibung ist nicht verhandelbar.**Wenn Sie „public class firstapplet“ eingeben, schlägt der Vorgang fehl. Java ist streng. „FirstApplet“ ist nicht dasselbe wie „firstapplet“. Lesen Sie den Code zweimal. Überprüfen Sie die Großschreibung. Wenn Sie dies vermasseln, gibt der Compiler Fehler aus, die wie Kauderwelsch aussehen.### Schritt 2: Speichern der DateiHier stolpern die meisten Anfänger.Speichern Sie die Datei unter dem genauen Namen: **FirstApplet.java**.Beachten Sie das große F und das große A. Alles andere ist in Kleinbuchstaben geschrieben.Wenn Sie es als „firstapplet.java“ speichern, funktioniert es nicht. Der Dateiname muss genau mit dem Namen der öffentlichen Klasse übereinstimmen. Dies ist eine Regel, kein Vorschlag.### Schritt 3: ZusammenstellungJetzt gehen wir zur Befehlszeile.Öffnen Sie ein MS-DOS-Fenster. Oder Eingabeaufforderung. PowerShell funktioniert auch, aber bleiben Sie vorerst bei den Grundlagen.Navigieren Sie zu Ihrem Verzeichnis. Verwenden Sie den Befehl „cd“.„Bash
cd-Pfad\zu\Ihrem\Ordner
„Führen Sie nun den Compiler aus.„Bash
javac FirstApplet.java
„Sehen Sie sich die Ausgabe an.Wenn es funktioniert, werden Sie nichts sehen. Stille ist gut. Schweigen bedeutet Erfolg.Wenn dies fehlschlägt, wird roter Text angezeigt. Fehler. Gehen Sie zurück zu Schritt 1. Überprüfen Sie Ihre Eingabe. Überprüfen Sie Ihren Fall.Wenn die Kompilierung erfolgreich ist, sehen Sie sich den Ordner an. Sie sollten jetzt eine neue Datei sehen: **FirstApplet.class**.Diese „.class“-Datei ist der Bytecode. Es ist das, was die Java Virtual Machine (JVM) tatsächlich ausführt. Die „.java“-Datei ist für Menschen. Die „.class“-Datei ist für die Maschine.**Achten Sie auf versteckte Erweiterungen.**Windows verbirgt Dateierweiterungen häufig standardmäßig. Sie denken vielleicht, Sie hätten „FirstApplet.java“ gespeichert, aber Windows hat es möglicherweise als „FirstApplet.java.txt“ gespeichert.Um dies zu überprüfen, geben Sie „dir“ in das Befehlsfenster ein. Schauen Sie sich den Dateinamen genau an.Wenn Sie „.txt“ sehen, löschen Sie es. Benennen Sie die Datei um, um die Erweiterung zu entfernen. Oder ändern Sie Ihre Windows Explorer-Einstellungen, um bekannte Dateitypen anzuzeigen. Dies ist eine häufige Falle.### Schritt 4: DebuggenHaben Sie Fehler erhalten?Repariere sie.Vergleichen Sie Ihren Code mit dem obigen Beispiel. Charakter für Charakter.Neu kompilieren.Machen Sie so weiter, bis „javac“ keine Ausgabe mehr erzeugt.Wenn „javac“ nicht als Befehl erkannt wird, ist Ihre Java-Installation fehlerhaft oder Ihre PATH-Umgebungsvariable ist nicht richtig eingestellt. Gehen Sie zurück und reparieren Sie Ihre Installation, bevor Sie fortfahren. Sie können nicht ausführen, was Sie nicht kompilieren können.### Schritt 5: Der HTML-WrapperEin Java-Applet kann nicht im luftleeren Raum ausgeführt werden. Es braucht einen Wirt. In den alten Web-Tagen war dieser Host eine HTML-Seite.Öffnen Sie ein neues Notepad-Fenster.Geben Sie diese HTML-Struktur ein:“`html
„Speichern Sie diese Datei im **gleichen Verzeichnis** wie Ihre Java-Datei.Nennen Sie es: **applet.htm**.Das Tag „“ ist die Brücke. Es teilt dem Browser (oder dem Viewer) mit, wo sich die kompilierte Klassendatei befindet. „code=FirstApplet.class“ zeigt auf den Bytecode. „width=200“ und „height=200“ definieren den Zeichenbereich.Wenn Sie HTML nicht verstehen, hören Sie auf. Informieren Sie sich über die Funktionsweise von Webseiten. Sie müssen den Container verstehen, bevor Sie den Inhalt verstehen.### Schritt 6: Ausführen des AppletsZurück zur Befehlszeile.Sie befinden sich immer noch im Verzeichnis mit beiden Dateien.Führen Sie den Applet-Viewer aus.„Bash
Appletviewer applet.htm
„Es öffnet sich ein Fenster.Schau es dir an.Sie sollten ein leeres Quadrat sehen. Im Inneren verläuft eine diagonale Linie von der oberen linken Ecke (0,0) nach unten rechts (200,200).Wenn das Fenster zu klein ist, wird die Linie möglicherweise abgeschnitten. Ziehen Sie an den Kanten, um die Größe zu ändern.Sie können „applet.htm“ auch in einem Browser öffnen. Netscape Navigator oder Internet Explorer. Sie werden das Gleiche tun.Es funktioniert. Sie haben Code geschrieben. Es wurde kompiliert. Es lief.Das# Schreiben Sie Ihr erstes Java-Applet: Ein Leitfaden für Einsteiger in die GrafikprogrammierungDu hast gerade etwas gebaut. Oder besser gesagt, Sie haben die Anweisungen, damit etwas geschieht, auf einen Bildschirm geschrieben.Es begann mit Code für ein **Java-Applet**. Ein Applet ist ein Java-Programm, das zur Ausführung in einem Webbrowser entwickelt wurde. Dies unterscheidet sich von einer **Java-Anwendung**, bei der es sich um ein eigenständiges Programm handelt, das auf Ihrem lokalen Computer läuft. Anwendungen sind komplexer und für die Webintegration etwas weniger beliebt, daher beginnen wir mit Applets. Wir haben den Code mit **javac** kompiliert. Wir haben es in eine einfache HTML-Seite verpackt. Dann haben wir es mit **Appletviewer** ausgeführt, obwohl ein Browser genauso gut funktioniert.Der Code ist kaum zehn Zeilen lang.„Java
import java.awt.Graphics;
öffentliche Klasse FirstApplet erweitert java.applet.Applet {
Farbe für öffentliche Hohlräume (Grafiken g) {
g.drawLine(0, 0, 200, 200);
}
}
„Das ist ungefähr so einfach wie ein Java-Applet. Um es wirklich zu verstehen, müssten Sie tief in **objektorientierte Programmiertechniken** eintauchen. Da wir jedoch davon ausgehen, dass Sie keinerlei Programmiererfahrung haben, lassen Sie uns den Lärm ausblenden. Ignorieren Sie das Gerüst. Konzentrieren Sie sich auf diese einzelne Zeile:`g.drawLine(0, 0, 200, 200);`Dies ist die einzige Zeile, die tatsächlich etwas tut. Es zeichnet die Diagonale. Der Rest ist nur Struktur. Was ist hier passiert? Wir haben dem Computer gesagt, er solle eine Linie von der oberen linken Ecke „(0,0)“ zur unteren rechten Ecke „(200, 200)“ zeichnen. Der Computer hat genau das getan. Das ist die Essenz der Computerprogrammierung.(Beachten Sie, dass wir im HTML-Schritt die Größe des Applet-Fensters auf 200 x 200 festlegen. Wenn das Fenster kleiner wäre, würde die Zeile abgeschnitten.)Hier ist, was diese Zeile tatsächlich sagt. Wir haben eine **Methode** (auch bekannt als **Funktion**) namens **drawLine** aufgerufen. Wir haben ihm vier **Parameter** übergeben: „0“, „0“, „200“ und „200“. Die Zeile endet mit einem Semikolon. Stellen Sie sich das Semikolon als einen Punkt in einem Satz vor. Es teilt dem Compiler mit, dass wir mit diesem Befehl fertig sind.Die Zeile beginnt mit **g.**. Das bedeutet, dass wir die Methode für ein bestimmtes Objekt namens **g** aufrufen. In einer Zeile können Sie sehen, dass **g** zur Klasse **Grafik** gehört. Wir werden die Kurse später aufschlüsseln. Im Moment wissen Sie einfach, dass eine Methode ein Befehl ist. Es weist den Computer an, eine Aufgabe auszuführen.Stellen Sie sich das Fenster als Raster vor. Die Koordinate „(0,0)“ befindet sich in der oberen linken Ecke. Die X-Achse bewegt sich nach rechts. Die Y-Achse bewegt sich nach unten. Jedes Inkrement ist ein **Pixel**. „(200, 200)“ ist also 200 Pixel nach rechts und 200 Pixel nach unten.## Experimentieren mit Koordinaten und ParameternÄndern Sie die Zahlen. Speichern Sie die Datei. Mit **javac** neu kompilieren. Im **Appletviewer** erneut ausführen. Sehen Sie, was kaputt geht. Sehen Sie, was erscheint.Das eigentliche Lernen geschieht, wenn Sie die Eingaben optimieren. Was passiert, wenn Sie die Koordinaten vertauschen? Was ist, wenn Sie einen davon negativ machen? Der Computer wird Sie nicht beurteilen. Es wird einfach ausgeführt.## Weitere Zeichenfunktionen entdeckenSie möchten wahrscheinlich mehr als nur eine einzelne diagonale Linie zeichnen. Wie finden Sie heraus, was Sie sonst noch tun können? Sie schauen sich die Dokumentation an.Als Sie das Java Development Kit (JDK) installiert haben, haben Sie einen Ordner voller Dokumente entpackt. Suchen Sie nach einer Datei mit dem Namen **java.awt.Graphics.html**. Es befindet sich auf Ihrem Computer. Auf meinem System befand es sich unter „D:\jdk1.1.7\docs\api\java.awt.Graphics.html“. Bei Ihnen wird es anders sein, aber es wird sich in der Nähe der Stelle befinden, an der Sie das JDK installiert haben.Öffnen Sie diese Datei. Scrollen Sie nach unten zum „Methodenindex“. Dies ist eine Liste aller Befehle, die die **Graphics**-Klasse versteht. **drawLine** ist nur eines davon. Die Liste enthält Werkzeuge zum Zeichnen:- Linien
– Bögen
– Ovale
– Polygone
– Rechtecke
– Textzeichenfolgen
– Einzelne CharaktereLesen Sie sie durch. Probieren Sie sie aus.Versuchen Sie beispielsweise, diese Befehle in der Methode „paint“ zu stapeln:„Java
g.drawLine(0, 0, 200, 200);
g.drawRect(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
„Dadurch wird ein Quadrat mit einem X darin gezeichnet. Stellen Sie sicher, dass Ihr Fenster groß genug ist, um die gesamte Form zu sehen.Sie können auch die Farben ändern. Mit der Methode **setColor** können Sie vom Standardschwarz zu etwas anderem wechseln. Sie müssen die Klasse **Color** importieren, um benannte Farben wie Rot oder Blau zu verwenden.Hier ist eine etwas komplexere Version:„Java
import java.awt.Graphics;
java.awt.Color importieren;öffentliche Klasse FirstApplet erweitert java.applet.Applet {
Farbe für öffentliche Hohlräume (Grafiken g) {
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
}
}
„Beachten Sie die neue **import**-Zeile für „java.awt.Color“. Dadurch erhalten wir Zugriff auf die Klasse „Color“.Was dieser Code bewirkt:
1. Stellen Sie die Farbe auf Rot ein.
2. Füllen Sie das gesamte 200×200-Feld mit Rot.
3. Schalten Sie die Farbe wieder auf Schwarz um.
4. Zeichnen Sie oben die beiden diagonalen Linien.Das Ergebnis ist ein rotes Quadrat mit einem schwarzen X darüber.Du kannst weitermachen. Bögen zeichnen. Zeichnen Sie Ovale. Text zeichnen. Die **Graphics**-Klasse ist ein Toolkit. Es ist egal, ob Sie ein Meisterwerk oder ein Chaos anrichten. Es ist nur wichtig, dass Ihre Syntax korrekt ist.Wohin gehst du von hier aus? Sie beginnen mit der Entwicklung von Dingen, die auf Benutzereingaben reagieren. Aber dazu ist es notwendig, die Ereignisse zu verstehen. Und Ereignisse erfordern das Verständnis von Objekten. Und Objekte erfordern Verständnisklassen.Es fühlt sich an wie eine Menge Fachjargon. Es ist. Aber Sie haben gerade eine Grenze gezogen. Du hast mit der Maschine gesprochen. Und es hörte zu.# Von Syntaxfehlern zu Logikfallen: Ein Anfängerleitfaden zum Java-DebuggingMöglicherweise starren Sie gerade auf den Bildschirm und fragen sich, woher ich wusste, dass ich **Color.red** statt nur „red“ eingeben musste, oder warum diese zweite Importanweisung notwendig war. Es fühlt sich wie Magie an, bis man merkt, dass es sich nur um Mustererkennung handelt. Ich habe Ihnen ein Beispiel für den Aufruf der Methode „setColor“ gezeigt, und jetzt hat Ihr Gehirn den Entwurf gespeichert: Verwenden Sie „Color“, gefolgt vom Farbnamen, und fügen Sie oben den entsprechenden Import hinzu.Die Dokumentation für „setColor“ verweist auf die Klasse **Color**, die alle gültigen Farbnamen und Techniken zum Mischen neuer Farben auflistet. Das hast du gelesen. Du merkst es dir. Wenn Sie das nächste Mal von Schwarz zu Blau wechseln müssen, raten Sie nicht. Du erinnerst dich. Das ist der Kernkreislauf der Softwareentwicklung. Sie erlernen Techniken, indem Sie Beispiele lesen, Dokumente durchsuchen oder durch Demo-Verzeichnisse scrollen. Wenn es Ihnen Spaß macht, diese kleinen Details zu erforschen, zu lernen und zu behalten, wird das Programmieren weniger zu einer lästigen Pflicht, sondern eher zur Gewohnheit.### Die Bedeutung der AusführungsreihenfolgeBisher haben Sie linearen, sequentiellen Code geschrieben. Dabei handelt es sich um Blöcke von Methodenaufrufen, die von der obersten bis zur untersten Zeile ausgeführt werden. Ordnung ist wichtiger als Sie vielleicht erwarten.Versuchen Sie ein kurzes Experiment. Zeichnen Sie zuerst eine horizontale Linie und dann ein rotes Rechteck über denselben Raum. Das Rechteck deckt die Linie ab. Die Linie ist immer noch in der Erinnerung da, aber optisch ist sie verschwunden. Dies unterstreicht eine grundlegende Wahrheit: Sequentielle Codezeilen bilden den Grundkern jedes Programms. Sie haben die volle Kontrolle darüber, was basierend auf der Sequenz auf dem Bildschirm angezeigt wird. Experimentieren Sie mit den Zeichenmethoden. Sehen Sie, was passiert, wenn Sie die Bestellung tauschen.## Fehler und DebuggingHier ist der Teil des Jobs, den niemand romantisiert. Du wirst Fehler machen. Sie werden Annahmen treffen, die falsch sind. Ihr Programm schlägt entweder beim Kompilieren fehl oder erzeugt eine Ausgabe, die keinen Sinn ergibt. Dabei handelt es sich um **Fehler**, und der Prozess, sie zu finden, ist **Debuggen**.Etwa die Hälfte der Zeit eines jeden Programmierers wird dafür aufgewendet. Keine neuen Funktionen schreiben. Keine Architektur von Systemen. Dinge reparieren, die bereits vorhanden sind.Um uns mit den Schmerzen vertraut zu machen, lassen Sie uns absichtlich einige Fehler erzeugen. Löschen Sie in Ihrem Code ein Semikolon am Ende einer Zeile und versuchen Sie, mit „javac“ zu kompilieren. Der Compiler wird Sie anschreien. Dies ist ein **Compilerfehler**. Sie können das Programm erst ausführen, wenn jeder einzelne beseitigt ist.Versuchen Sie, einen Funktionsnamen falsch zu schreiben. Lassen Sie eine öffnende geschweifte Klammer „{“ weg. Löschen Sie eine der **import**-Zeilen. Gewöhne dich an die Frustration. Wenn Sie zum ersten Mal eine bestimmte Fehlermeldung sehen, fühlt es sich an wie eine Wand. Indem Sie absichtlich bekannte Fehler erstellen, erstellen Sie eine mentale Karte der häufigsten Fallstricke. Sie beginnen, Syntaxfehler zu erkennen, bevor sie auftreten.### Compilerfehler vs. LaufzeitlogikfehlerEin Compilerfehler hält Sie kalt. Ein Fehler, der oft als Ausführungs- oder Laufzeitfehler bezeichnet wird, ist subtiler. Der Code wird kompiliert. Es läuft. Es stürzt nicht ab. Aber es macht nicht das, was Sie wollen.Betrachten Sie diesen Ausschnitt, der ein rotes Rechteck mit zwei schwarzen diagonalen Linien darüber erzeugt:„Java
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
„Schauen Sie sich nun diese Version an:„Java
g.setColor(Color.black);
g.drawLine(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
g.setColor(Color.red);
g.fillRect(0, 0, 200, 200);
„Der Code ist nahezu identisch. Die Logik ist dieselbe. Aber die Ausgabe ist völlig anders. Im zweiten Fall wird das rote Rechteck *nach* den Linien gezeichnet. Es verdeckt sie. Wenn Sie ein „X“ in einem roten Kästchen erwartet haben, liegt im zweiten Fall ein Fehler vor. Es handelt sich nicht um einen Syntaxfehler. Der Code ist gültiges Java. Es ist ein logischer Fehler.Hier ist eine weitere Falle:„Java
g.drawLine(0, 0, 200, 200);
g.drawRect(0, 0, 200, 200);
g.drawLine(200, 0, 0, 200);
„Dadurch wird ein schwarz umrandeter Kasten mit zwei Diagonalen gezeichnet. Ändern Sie nun die letzte Zeile in:„Java
g.drawLine(0, 200, 0, 200);
„Das Ergebnis? Nur eine Diagonale. Der zweite „drawLine“-Befehl zeichnet eine Linie von der unteren linken Ecke zur *gleichen* unteren linken Ecke. Es ist ein Punkt, keine Linie. Es existiert, aber es ist unsichtbar.Das ist die Art von Fehler, der Stunden braucht, um ihn zu finden. Es ist nicht offensichtlich. Sie müssen auf den Code starren, bis Ihre Augen glasig werden, und dabei jede Koordinate und jede Variablenänderung verfolgen.Sie werden viel Zeit damit verbringen, dies zu üben. Der durchschnittliche Entwickler verbringt die Hälfte seines Tages damit, diese Probleme aufzuspüren, zu finden und zu beseitigen. Lass dich davon nicht frustrieren. Frustration ist nur das Gefühl des Lernens. Insekten sind ein normaler Teil des Handwerks. Sie sind der Eintrittspreis.> „Der Code wird kompiliert. Er wird ausgeführt. Er stürzt nicht ab. Aber er macht nicht das, was Sie von ihm erwarten.“Sie werden besser darin, sie zu erkennen. Sie entwickeln ein Gespür dafür, wo die Logik normalerweise bricht. Aber jetzt tippen Sie einfach weiter. Mach weiterhin Dinge kaputt. Repariere sie. Wiederholen.# Java-Variablen und Typsystem verstehenCode läuft nicht einfach im luftleeren Raum. Es benötigt einen Ort, an dem Daten gespeichert werden können, während es funktioniert. Dafür gibt es **Variablen**. Sie bitten einen Benutzer um eine Eingabe oder greifen auf einen Wert aus einer Berechnung zurück und benötigen einen Container. Sie fügen es in eine Variable ein, damit Sie es später abrufen können.Aber Java ist dabei nicht leichtfertig. Es zwingt Sie dazu, konkret zu sein.Bevor Sie eine Variable verwenden, müssen Sie sie definieren. Sie müssen seinen Typ deklarieren.„Java
int width = 200;
int Höhe = 200;
„Hier werden „width“ und „height“ als **int** deklariert. Das bedeutet, dass sie ganze Zahlen enthalten. Ganze Zahlen. Keine Dezimalstellen. Kein Text.Diese Strenge ist der Grund, warum Java als **stark typisierte** Sprache bezeichnet wird. In anderen Sprachen können Sie möglicherweise in einer Sekunde eine Zeichenfolge und in der nächsten eine Zahl in einer Variablen speichern. Java sagt nein. Sie deklarieren den Typ im Voraus. Es klingt nach zusätzlicher Arbeit. Es ist. Aber bei großen Projekten erspart es Ihnen subtile Fehler, bei denen Sie Text versehentlich wie eine Zahl behandeln.### InitialisierungsangelegenheitenIm obigen Snippet haben wir nicht nur die Variablen deklariert. Wir haben sie initialisiert.„Java
int width = 200;
„Der Teil „= 200“ ist die Initialisierung. Wenn Sie möchten, können Sie dies in zwei Schritte aufteilen, es ist jedoch sinnvoller, es auf einmal zu erledigen:„Java
int Breite;
Breite = 200;
„Gleiches Ergebnis. Mehr Tippen. Warum initialisieren Sie? Weil Java sich beschwert, wenn Sie es nicht tun.Versuchen Sie, das „= 200“ zu entfernen. Versuchen Sie, den Code zu kompilieren. Der Compiler gibt einen Fehler aus. Sie können nicht initialisierte lokale Variablen ausführen. Das ist eine Funktion. Es erspart Ihnen spätere Laufzeitabstürze.### Primitive vs. KlassenvariablenJava hat zwei Hauptkategorien von Variablen.1. **Primitive (einfache) Variablen**: Wie „int“. Sie haben einen einzigen Wert. Mehr nicht. Sie legen es fest, Sie lesen es.
2. **Klassenvariablen**: Dies sind Objekte. Sie bestehen aus mehreren Teilen (Feldern) und sind mit Methoden (Funktionen) verknüpft.Denken Sie an die Klasse **Rectangle**. Es ist nicht nur eine Zahl. Es ist eine Form. Es verfügt über Breite, Höhe, x- und y-Koordinaten. Es hat Verhalten.### Code responsiv gestaltenIm vorherigen Beispiel war die Fenstergröße fest auf 200 x 200 codiert. Das ist starr. Was passiert, wenn der Benutzer die Fenstergröße ändert? Der Zeichencode muss angepasst werden.Wir können den Grafikkontext nach dem verfügbaren Platz fragen.„Java
Rechteck r = g.getClipBounds();
„Die Methode „getClipBounds()“ befindet sich in der Klasse **Graphics**. Es braucht keine Argumente. Es gibt ein **Rectangle**-Objekt zurück, das den aktuellen Zeichenbereich darstellt.Jetzt haben wir ein „Rectangle“-Objekt, das in der Variablen „r“ gespeichert ist. Aber wir wollen immer noch einfache ganze Zahlen für unsere Zeichenfunktionen. Also extrahieren wir die Daten.„Java
width = r.width – 1;
height = r.height – 1;
„Mit dem Punktoperator („.“) können wir auf Felder innerhalb eines Objekts zugreifen. „r.width“ übernimmt das Breitenfeld vom „r“-Objekt. Wir subtrahieren 1, da sich die Kanten oft um ein Pixel überlappen. Versuchen Sie, die „-1“ zu entfernen. Versuchen Sie es mit „-5“. Sehen Sie, wie sich die Zeichnung verschiebt.### Warum Zwischenvariablen verwenden?Sie hätten die Variablen „width“ und „height“ ganz weglassen können.„Java
g.drawRect(0, 0, r.width – 1, r.height – 1);
„Es funktioniert. Aber es ist schwieriger zu lesen. Es ist schwieriger zu debuggen.Das Speichern von Werten in benannten Variablen ist eine gute Angewohnheit. Auch wenn es nur eine zusätzliche Codezeile ist.### Häufige primitive TypenJava unterstützt mehrere Grundtypen. Hier sind die häufigsten, denen Sie begegnen werden:* **int**: Ganze Zahlen. 1, 2, 100, -5.
* **double**: Dezimalzahlen. 1.5, 3.14159.
* **boolescher Wert**: Wahr oder falsch.Sie verwenden „int“ für Koordinaten und Zählungen. „doppelt“ für präzise Messungen. „boolean“ für Logikflags.Das Typensystem ist nicht nur ein Regelwerk. Es ist ein Sicherheitsnetz. Es erkennt Fehler, bevor sie zu Problemen werden.# Java-Grundlagen: Mathematische Operationen für primitive TypenJava beherrscht die Grundrechenarten, ohne ins Schwitzen zu geraten. Sie sehen sich die Standardoperatoren an: **Addition** (+), **Subtraktion** (-), **Multiplikation** (*) und **Division** (/). Diese funktionieren mit primitiven Datentypen wie **float** für Dezimalwerte (3.14159) und **char** für einzelne Zeichen (a, b, c).Schauen wir uns ein konkretes Beispiel an. Angenommen, Sie müssen das Volumen einer Kugel mit einem Durchmesser von 10 Fuß berechnen. Der Code kümmert sich nicht um das physische Objekt, sondern nur um die Zahlen.„Java
Schwimmerdurchmesser = 10;
Schwimmradius;
Float-Volumen;Radius = Durchmesser / 2,0;
Volumen = 4,0 / 3,0 * 3,14159 * Radius * Radius * Radius;
„Die erste Zeile ist hier, wo Anfänger oft stolpern. `radius = Diameter / 2.0;` weist Java an, den Wert in `diameter` zu nehmen, ihn durch 2,0 zu dividieren und das Ergebnis in `radius` zu schieben.Das Gleichheitszeichen ist hier keine Aussage über Gleichheit. Es handelt sich um einen Zuweisungsoperator. Es bedeutet: „Nehmen Sie die Berechnung auf der rechten Seite und geben Sie das Ergebnis in die Variable auf der linken Seite ein.“Diese Ausrichtung ist wichtig. Wenn Sie sie austauschen, geht der Code kaputt. Java löst keine algebraischen Gleichungen. Es führt Anweisungen aus.Es folgt die Volumenberechnung. Es verwendet die Konstante pi (ungefähr 3,14159) und den aus dem Durchmesser abgeleiteten Radius. Auch hier gilt die Reihenfolge der Operationen. Multiplikation und Division erfolgen von links nach rechts, sofern Klammern nichts anderes vorschreiben.Warum „2.0“ anstelle von „2“ verwenden? Denn „Durchmesser“ ist ein **Float**. Die Verwendung eines ganzzahligen Literals kann in manchen Kontexten eine ganzzahlige Division erzwingen oder zumindest eine implizite Konvertierung bewirken. Durch die explizite Verwendung von „2.0“ bleibt alles im Dezimalbereich. Es vermeidet Rundungsfehler bereits im Vorfeld.So manipulieren Sie einfache Typen. Sie weisen zu. Sie rechnen. Sie weisen neu zu. Die Maschine macht genau das, was Sie ihr sagen, nicht mehr und nicht weniger.# Wie man Schleifen in Java verwendet, um Gitter zu zeichnen und Endlosschleifen zu vermeidenComputer sind für die Wiederholung gebaut. Der Mensch wird müde. Code nicht. Wenn Sie jemals einen sequentiellen Codeblock geschrieben haben, nur um eine einfache Aktion zu wiederholen, haben Sie die Reibung gespürt. Es ist langweilig. Es ist fehleranfällig. Und genau deshalb gibt es Looping.Schauen wir uns ein konkretes Beispiel an. Stellen Sie sich vor, Sie müssten ein Raster aus horizontalen Linien zeichnen. Sie könnten jede einzelne Zeile einzeln aufschreiben.So sieht das in rohem Java aus:„Java
import java.awt.Graphics;
öffentliche Klasse FirstApplet erweitert java.applet.Applet {
Farbe für öffentliche Hohlräume (Grafiken g) {
int y;
y = 10;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
y = y + 25;
g.drawLine(10, y, 210, y);
// … und so weiter, für jede Zeile …
}
}
„Neue Programmierer starren oft auf „y = y + 25;“ und blinzeln. Es fühlt sich rekursiv an. Aber das ist es nicht. Es ist nur eine Aufgabe. Nehmen Sie den aktuellen Wert von „y“. Addieren Sie 25. Fügen Sie diese neue Zahl wieder in die Variable „y“ ein. Wenn „y“ 10 war, ist es jetzt 35. Einfache Arithmetik.Aber schauen Sie sich den Code an. Es ist aufgebläht. Die gleichen zwei Zeilen wiederholen sich endlos. Zeichne eine Linie. Aktualisieren Sie die Variable. Zeichne eine Linie. Aktualisieren Sie die Variable. Wenn Sie ein Raster mit Tausenden von Zeilen benötigen würden, wäre Ihr Code unlesbar und nicht mehr wartbar.Hier wechseln Sie zu einer **Schleife**.### Die while-SchleifenstrukturEine **while**-Schleife weist Java an, so lange etwas zu tun, wie eine Bedingung wahr bleibt. Hier ist das gleiche Raster, bereinigt:„Java
import java.awt.Graphics;
öffentliche Klasse FirstApplet erweitert java.applet.Applet {
Farbe für öffentliche Hohlräume (Grafiken g) {
int y;
y = 10;
while (y <= 210) { g.drawLine(10, y, 210, y); y = y + 25; } } } „Wenn Sie dies ausführen, zeichnet Java neun horizontale Linien. Hier erfahren Sie genau, was unter der Haube passiert.Bei der **while**-Anweisung hält Java an. Es prüft den Ausdruck in den Klammern. Ist „y“ kleiner oder gleich 210?- Wenn ja, wird der Codeblock in die geschweiften Klammern „{ }“ eingefügt. Es führt den Zeichenbefehl aus. Es aktualisiert „y“. Dann trifft es auf die Schließklammer und kehrt nach oben zurück. Es stellt die Frage noch einmal. - Wenn nein, wird der Block vollständig übersprungen. Es geht weiter mit dem, was als nächstes kommt.Anfangs ist „y“ 10. 10 ist kleiner als 210. Java zeichnet eine Linie von (10,10) nach (210,10). Es setzt „y“ auf 35. Es wird eine Schleife ausgeführt. 35 ist kleiner als 210. Es zieht eine andere Grenze. Es setzt „y“ auf 60. Dieser Zyklus wiederholt sich, bis „y“ schließlich 210 überschreitet. Dann wird die Schleife unterbrochen.Sie können das Raster vervollständigen, indem Sie eine zweite **while**-Schleife für die vertikalen Linien hinzufügen:„Java import java.awt.Graphics; öffentliche Klasse FirstApplet erweitert java.applet.Applet { Farbe für öffentliche Hohlräume (Grafiken g) { int x, y; y = 10; while (y <= 210) { g.drawLine(10, y, 210, y); y = y + 25; } x = 10; while (x <= 210) { g.drawLine(x, 10, x, 210); x = x + 25; } } } „Jede **while**-Schleife besteht aus drei verschiedenen Teilen, auch wenn sie nicht alle in einer Zeile stehen:1. **Initialisierung:** Setzen von „y“ auf 10, bevor die Schleife beginnt. 2. **Auswertung:** Die Prüfung innerhalb der Klammern „(y <= 210)“. 3. **Inkrementieren:** Der Aktualisierungsschritt „y = y + 25“ innerhalb des Blocks.Wenn ein Teil dieser Struktur fehlt oder beschädigt ist, schlägt die Schleife fehl.### Die for-Schleifen-AlternativeJava bietet eine kompaktere Möglichkeit, mit diesem speziellen Muster umzugehen. Es wird eine **for**-Schleife genannt.Wenn Sie eine **while**-Schleife haben, die so aussieht:„Java y = 10; while (y <= 210) { g.drawLine(10, y, 210, y); y = y + 25; } „Sie können es als **for**-Schleife umschreiben:„Java für (y = 10; y <= 210; y = y + 25) { g.drawLine(10, y, 210, y); } „Die **for**-Schleife bewirkt nichts Magisches. Es fasst lediglich die Initialisierungs-, Auswertungs- und Inkrementierungsschritte in einer einzigen Codezeile zusammen. Es spart Platz. Es hält die Logik sichtbar. Das ist es.### Häufige Fallstricke bei SchleifenBei der Arbeit mit Schleifen sind zwei wichtige Punkte zu beachten.Erstens spielt die Richtung keine Rolle. Sie könnten „y“ auf 210 initialisieren und ihn jedes Mal um 25 dekrementieren. Die Bedingung würde „y >= 10“ lauten. Mathematisch ist es identisch. Die meisten Leute ziehen es vor, zu addieren, weil sich das Aufwärtszählen natürlicher anfühlt, aber vielleicht bevorzugen Sie auch das Subtrahieren. Verwenden Sie das, was die mentale Belastung für Ihren speziellen Fall reduziert.Zweitens, und das ist entscheidend: Der Inkrementierungsschritt ist nicht optional.Wenn Sie „y = y + 25“ versehentlich in der Schleife weglassen, bleibt „y“ für immer bei 10. 10 ist immer kleiner als 210. Die Schleife endet nie. Dies ist eine **Endlosschleife**. Es ist einer der häufigsten Fehler in der Programmierung. Das Programm bleibt hängen, verbraucht CPU und sieht eingefroren aus. Sie müssen das Beenden der Anwendung erzwingen oder den Prozess abbrechen. Es handelt sich um Kopfschmerzen, die Sie mit einem Semikolon und einer Gewohnheitsüberprüfung vermeiden können.Versuchen Sie, Programme zu schreiben, um mit diesen Konzepten einfache Figuren zu zeichnen. Machen Sie sich mit dem Rhythmus von Initialisierung, Prüfung, Aktion und Aktualisierung vertraut. Es ist der Herzschlag der meisten Software.### Wo man tiefer graben kannSie möchten mehr Code? Mehr Syntax? Gibt es weitere Möglichkeiten, Ihren Build zu zerstören? Die nächste Seite enthält die Links. Java ist nicht die einzige Sprache da draußen. Es ist nur das, was wir auf den letzten acht Seiten analysiert haben. Andere existieren. C++, Python, Rust. Sie alle haben ihre eigenen Macken, ihr eigenes Ökosystem und ihre eigene Art und Weise, Sie dazu zu bringen, Ihre Lebensentscheidungen in Frage zu stellen.Folgen Sie diesen Links. Tauchen Sie ein. Oder auch nicht. Dem Compiler ist es egal.