Ergebnis 1 bis 10 von 10

Thema: [Tutorial] Java #1 - Hello Java!

  1. #1

    [Tutorial] Java #1 - Hello Java!

    Auf vielfachen Wunsch versuche ich mich einfach mal am ersten Teil eines kleinen Java Kurses. Ich hoffe einfach, dass er einigermaßen verständlich ist. Die Installation eines Compilers (bzw. des JDK) möchte ich vorerst nicht ausführlich behandeln. Wenn ihr nicht wisst, wie das geht, ladet euch am besten Eclipse runter. Das ist eine der gängigsten Entwicklungsumgebungen für Java und deren Paket "Eclipse IDE for Java Developers" enthält auch einen Compiler, für den ihr gar nichts mehr einstellen müsst. Ich werde im Tutorial, wenn es um die Projektverwaltung geht, meistens nur die Vorgehensweise mit Eclipse beschreiben. Bei den meisten anderen Entwicklungsumgebungen heißen die Menüpunkte aber ähnlich.


    Teil 1 - Hello Java!

    Traditionell ist das erste Programm, das ein Anfänger in einer Programmiersprache schreibt, das "Hello World". Das ist ein Programm, das nichts weiter macht, als den Text "Hello World!" oder "Hallo Welt!" - meistens gefolgt von einem Zeilenumbruch - auf dem Bildschirm auszugeben.

    Erstellt in Eclipse ein neues Java Projekt (File -> New -> Java Project) und gebt als Projektnamen "Hello" ein. Alles andere könnt ihr erstmal lassen, wie es ist. Sollte im Hauptfenster noch der Willkommensbildschirm angezeigt werden, klickt auf "Go to workbench" (der gebogene Pfeil ganz rechts). Klickt dann mit der rechten Maustaste im Package Explorer auf "src" (entspricht dem automatisch angelegten ordner src für Sources auf der Festplatte) und wählt dann New -> File. Im nun erscheinenden Dialogfenster gebt ihr Hello.java ein. Der Dateiname ist eigentlich egal, aber grade bei kleinen Projekten kann es nicht schaden, wenn die Hauptdatei (zu Projekten aus mehreren Dateien kommen wir in einem späteren Teil) genau so heißt, wie das Projekt.

    Eclipse bietet zwar die Möglichkeit, grundlegende Strukturen automatisch zu generieren, aber ich habe die Erfahrung gemacht, dass es am Anfang besser ist, alles von Hand zu tippen. Dadurch lernt man einfach mehr. Tippt also erstmal folgenden Code ab (nicht kopieren und einfügen, das bringt euch nichts, wenn ihr es lernen wollt)

    Code (Java):
    class Hello {
        public static void main(String[] args) {
            System.out.println("Hello World!");
        }
    }


    Wo genau die Zeilenumbrüche liegen und wie viele Leerzeichen ihr am Anfang setzt, ist eigentlich egal. So, wie ich es gemacht habe, sieht es der Standard vor, aber folgende Beispiele wären vollkommen damit gleichbedeutend:

    Code (Java):
    class Hello
    {
    public static void main(String[] args)
    {
    System.out.println("Hello World!");
    }
    }
    Code (Java):
    class Hello { public static void main(String[] args) { System.out.println("Hello World!"); } }


    Das ist alles nur eine Frage der Übersicht. Haltet euch am besten ungefähr an den Stil aus dem ersten Beispiel (und aus den ggf. folgenden), dann wird der Code einigermaßen lesbar.

    Nun will ich aber Zeile für Zeile den Code erklären, auch wenn ich einiges erstmal auslassen muss, weil es ohne das Verständnis von Klassen, Objekten und Funktionen etwas schwierig wird.

    Zeile 1: class Hello {
    Hier definieren wir die Klasse "Hello". Das Schlüsselwort class sagt, dass eine Klassendefinition folgt, Hello ist der Name der Klasse und die geschweifte Klammer auf sagt, dass hier ein Block anfängt, der bis zur passenden Klammer zu geht - alles, was dazwischen steht, ist also "in" diesem Block bzw. der Klasse. Ich werde vorerst nicht näher drauf eingehen, was genau eine Klasse ist. Das kommt in einem späteren Teil des Java Kurses und in einem getrennten Kurs über Objektorientierung. Wichtig ist erstmal, dass in Java nichts außerhalb von Klassen existiert und dass jede Datei(vorerst) genau eine Klasse enthält. Nicht mehr und nicht weniger. Der Name ist an sich frei wählbar. Die Klasse könnte genau so gut IchMagSchokoladenkekse oder asd90dsan heißen. Hauptsache, der Name besteht nur aus Buchstaben, Zahlen und Unterstrichen, das erste Zeichen ist ein Buchstabe und der Name ist kein reserviertes Schlüsselwort. Die Konvention sieht aber vor, dass die Klasse genau so heißt, wie die Datei, in der sie steht - inklusive Groß- und Kleinschreibung.

    Zeile 2: public static void main(String[] args) {
    Herzlichen Glückwunsch, ein Haufen Schlüsselwörter, von denen ihr momentan noch nicht verstehen könnt, was sie bedeuten. Macht euch darum keine Sorgen, das meiste wird im Verlauf des Kurses nach und nach erklärt, für vieles fehlen einfach noch die Grundlagen. Deshalb werde ich die einzelnen Schlüsselwörter höchstens ganz kurz anschneiden.

    Das Ganze ist eine Methodendefinition. Eine Methode (gelegentlich auch Funktion genannt) ist so etwas wie ein Unterprogramm. Das heißt, Methoden enthalten wiederverwendbare Codeabschnitte, die von anderen Methoden mitbenutzt werden können.

    public bedeutet, dass diese Methode von jeder Methode benutzt werden kann, auch wenn sie nicht in der gleichen Klasse steht. Das Ganze nennt man auch Sichtbarkeit.
    static bedeutet, dass die Methode für die ganze Klasse ist und nicht nur für einzelne Objekte dieser Klasse (siehe später bzw. Objektorientierungskurs)
    void bedeutet, dass die Methode keinen Wert zurück gibt. Bei Methoden, die etwas zurückgeben, steht hier ein Klassen- bzw. Typenname.
    main ist der Name der Methode. Für Methodennamen gilt das Gleiche wie für Klassennamen.
    Die Klammer leitet die Parameterliste (auch hier, siehe später) ein. Parameter sind Werte, die einer Methode übergeben werden können.
    String[] ist der Typ des ersten Parameters. String ist eine Klasse für Zeichenketten ("a" ist eine Zeichenkette, dieser gesamte Text hier aber auch) und das [] bedeutet, dass es sich nicht nur um eine einzelne Zeichenkette handelt, sondern um eine ganze Liste davon.
    args ist der Name des Parameters hier gilt das gleiche, wie für Methoden- und Klassennamen.
    Die Klammer beendet die Parameterliste. Bei anderen Methoden könnten hier durch Kommas getrennt weitere Parameter stehen.
    Die geschweifte Klammer öffnet wieder einen Block. Diesmal den, in dem der eigentliche Code dieser Methode steht.

    Ihr seht, hinter den paar Worten versteckt sich einiges an Informationen. Allerdings ist das momentan alles noch nicht sonderlich wichtig. Die Hauptmethode, die beim Start des Programms ausgeführt wird, heißt immer main, ist public static, gibt nichts zurück (void) und hat einen Parameter vom Typ String[]. An dieser Zeile könntet ihr exakt zwei Dinge ändern, ohne etwas kaputt zu machen. Ihr könntet public und static miteinander vertauschen und ihr könntet den Namen args durch irgendeinen anderen ersetzen. Die Konvention besagt aber, dass die Zeile eben genau so aussehen sollte, wie ich sie geschrieben habe.

    Zeile 3: System.out.println("Hello World!");
    Jetzt wirds interessant, das ist die erste Zeile mit ausführbarem Code. Dabei ist System.out.println der Befehl, um eine Zeile samt Zeilenumbruch am Ende auf dem Bildschirm auszugeben. In System.out gibt es noch andere Methoden, etwa System.out.print, das Text ohne Zeilenumbruch ausgibt. Um zu verstehen, was genau das System.out bedeutet, braucht ihr - mal wieder - ein paar Grundkenntnisse zur Objektorientierung. In Klammern folgt dann die Parameterübergabe. System.out.println nimmt entweder genau eine Zeichenkette (einen String) oder eine Zahl. Zeichenketten werden dabei üblicherweise in normalen (doppelten) Anführungszeichen geschrieben. Wollten wir die Zahl 42 ausgeben, müsste die Zeile System.out.println(42); lauten. Das Semikolon (;) am Schluss bedeutet, dass der Befehl hier vorbei ist. Andere Sprachen beenden den Befehl automatisch am Zeilenende, aber bei Java darf jeder Befehl über beliebig viele Zeilen gehen. Deshalb dürft ihr das Semikolon auf keinen Fall vergessen (und glaubt mir, das passiert im Eifer des Gefechts ziemlich schnell)

    Zeile 4 und 5: }
    Hier werden die beiden Blöcke aus den ersten beiden Zeilen wieder geschlossen. Wenn ihr irgendwelche ungeschlossenen Blöcke in eurem Code habt, bekommt ihr eine Fehlermeldung. Also vergesst auch das nicht.

    Zeit zum Experimentieren
    Ausführen könnt ihr den Code, indem ihr links oben auf "Run" (der grüne Kreis mit dem wießen Play-Icon) klickt. Falls ihr gefragt werdet, wählt aus, dass es sich um eine "Java-Application" handelt und nicht um ein Applet. Applets sind in Websites eingebettete Programme mit grafischer Oberfläche. Dazu kommen wir später. Falls ihr keine Entwicklungsumgebung verwendet, die es euch so einfach macht, müsst ihr euch leider mit der Shell/Eingabeaufforderung anfreunden:

    Code (bash):
    cd pfad/zum/projekt/
    javac Hello.java
    java Hello


    Beachtet, dass in der letzten Zeile keine Dateiendung stehen darf.

    Nun ist es an der Zeit, ein bisschen mit dem Code zu spielen. Im Codeblock einer Methode (also zwischen dem, was momentan Zeile 2 und 4 sind), dürfen beliebig viele Befehle stehen. Jeder endet mit einem Semikolon und jeder steht normalerweise in seiner eigenen Zeile. Wenn wir also zweimal den Text "Hello World!" ausgeben wollten, sähe das Programm so aus:

    Code (Java):
    class Hello {
        public static void main(String[] args) {
            System.out.println("Hello World!");
            System.out.println("Hello World!");
        }
    }


    Übrigens kann man Zeilenumbrüche auch noch anders erzeugen, als mit println. Nämlich mit "\n". Wenn ihr System.out.print("Hello World!\nHello World!\n") schreibt, kriegt ihr den gleichen Output wie oben. Natürlich kann man "\n" auch beliebig mit println kombinieren.

    Spielt ein bisschen damit rum, verändert Dinge, schaut, was funktioniert und was nicht. Dadurch lernt man am meisten. Und vor allem, lasst euch nicht von den Sachen ablenken, die ich jetzt noch nicht ausführlich erklärt habe. Nehmt sie vorerst als gegeben hin, sie sind bei (fast) allen Java Programmen gleich.

    Übungsaufgaben zu Teil 1
    1. Schreibe ein Programm, das statt "Hello World!" den Text "Das ist mein erstes Java Programm" ausgibt
    2. Schreibe ein Program, das in jeweils einer Zeile deinen Vornamen, deinen Nachnamen und dein Alter ausgibt.


    Wenn ihr wollt, könnt ihr die Lösungen zu den Übungsaufgaben im [spoiler]-Tag hier posten, dann schau ich sie mir an. Allerdings seht ihr ja selbst, ob eure Programme das tun, was sie sollen.

    Wenn ihr Anmerkungen und Verbesserungsvorschläge habt, nur her damit. Ich werde wohl demnächst noch den zweiten Teil (wahrscheinlich über Variablen) und den Kurs über die Grundlagen der Objektorientierung posten, danach ist jeder herzlich eingeladen, selbst zu diesem Kurs beizutragen.

    Weiter zu Teil 2 - Von Variablen und anderen Wundern

    Geändert von DFYX (20.10.2009 um 02:13 Uhr)

  2. #2
    Ist echt schön aufgebaut und gut erklärt.
    Dennoch finde ich den Start etwas zu... sachte, sagen wir mal.^^
    Aber vielleicht sehen das diejenigen, die das noch nie gesehen haben anders.

  3. #3
    Ja, es kratzt natürlich erstmal nur ganz sachte an der Oberfläche, aber ich finde, sowas ist besser, als die Leute ins kalte Wasser zu schmeißen und mit Dingen zu überfordern, die sie noch gar nicht verstehen können, wenn sie keine anderweitigen Vorkenntnisse haben.

  4. #4
    Natürlich ist das besser.^^
    Im Internet geistern ja viele Kurse rum, die schon einiges an Vorwissen besitzen, zudem erklären viele nicht was jetzt zum Beispiel mit [FONT=Courier New]main oder void[/FONT] eigentlich ausgedrückt wird.
    Ich find's gut, wie gesagt. =)

    Du hättest allerdings zum Beispiel noch [FONT=Courier New]\n[/FONT] erwähnen können.

  5. #5
    Hab mal ein paar Kleinigkeiten (Syntax für Strings, \n und Compileraufruf) hinzugefügt.

  6. #6
    Zitat Zitat von DFYX Beitrag anzeigen
    Ich werde wohl demnächst noch den zweiten Teil (wahrscheinlich über Variablen) und den Kurs über die Grundlagen der Objektorientierung posten [...]
    Hm, es wäre besser, unnötig redundante Informationen, wie etwa, wenn jedes Tutorial Objektorientierung erläutert, zu vermeiden. Objektorientierung ist etwas, das man auch sprachunabhängig erklären kann und innerhalb des Tutorials kann man dann auf die Spezialfälle der Objektorientierung der jeweiligen Sprache eingehen und auf das sprachunabhängige Grundlagen-Tutorial verweisen.
    Genauso verhält es sich mit Konstrukten, die fast jede Sprache gemeinsam hat, wie etwa Geltungsbereiche, Prozeduren, Variablen, usw.
    Ich würde dann gerne diese Grundlagen-Tutorien in nächster Zeit übernehmen.

    Geändert von Kyuu (12.10.2009 um 16:55 Uhr)

  7. #7
    Ich finds toll, werde mir neben der Fachlitaratur 100% auch das hier durchlesen, da ich möglichst viel erfahren will un die Erklärung der einzelnen Betsandteile ist einfach klasse.

  8. #8
    Sehr schönes erstes Tutorial. Bitte mach weiter so und erhöhe den Anspruch nicht zu schnell zu stark, sonst verlieren so schlimme noobs wie ich schnell die Lust . Find auch die Idee mit den Übungsaufgaben gut (Bitte Beibehalten!)

    Geändert von devilX (14.10.2009 um 15:36 Uhr)

  9. #9
    Ich hab mir grade mal ein grobes Konzept für Teil 2 gemacht, aber heute werde ich das wohl nicht mehr schaffen. Rechnet mal so gegen Freitag oder Samstag damit.

  10. #10

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •