1. Der Einstieg in Java Lernziele: Am Ende dieses Kapitels wirst Du wissen, aus welchen Bestandteilen ein Java-Programm besteht, Java-Programme ü bersetzen und ausfü hren kö nnen, Mö glichkeiten der Kommentierung von Java-Programmen kennen, einfachste Java-Programme erstellen kö nnen und Regeln zur Formatierung von Java-Quelltext beherrschen (Ü bungen).
Was heißt Programmieren? Ein Programm ist ein Algorithmus, der in einer Programmiersprache formuliert ist. Arten von Programmiersprachen: Maschinensprache ist eine Sprache, die der Prozessor des Rechners direkt versteht. - Notation aus Nullen und Einsen, schwer lesbar Assembler: Jedem binä ren Maschinencode ist fü r die leichtere Lesbarkeit ein Assemblercode aus Buchstaben und Ziffern zugeordnet. - Abhä ngigkeit vom Prozessortyp Hö here bzw. problemorientierte Programmiersprachen: Es stehen Operationen zur Verfü gung, die nicht eins-zu-eins auf eine Operation des Prozessors abgebildet werden kö nnen. - einfachere Programmierung, nichttriviale Ü bersetzung in Maschinensprache notwendig
Ein Ü bersetzer, der problemorientierte Programme in maschinennahe Programme transformiert, heißt Compiler. Werden Programme nicht vollstä ndig ü bersetzt und spä ter ausgefü hrt, sondern Anweisung fü r Anweisung ü bersetzt und spä ter ausgefü hrt, spricht man von einem Interpreter. Der Java-Compiler ü bersetzt das sogenannte Quellprogramm in Java-Bytecode, der unabhä ngig von einem bestimmten Prozessor ist. Der Java-Interpreter analysiert den erzeugten Bytecode schrittweise und fü hrt ihn aus. - virtuelle Maschine (VM), Plattformunabhä ngigkeit
Java Quellprogramm Java Compiler Java Bytecode Java VM für Windows Java VM für Linux Java VM für Mac OS X ausführbares ausführbares ausführbares Windows Linux Mac OS X Programm Programm Programm
Programmieren bedeutet, unter Einsatz einer Programmiersprache ein gegebenes Problem zu lö sen. Hierfü r sind eine Reihe von Arbeitsschritten notwendig, z.b.: Analyse, Modellierung, Codierung, Compilierung, Ausfü hrung Das Schreiben des Programmtextes ist die Codierung. Dies geschieht unter Einsatz eines Texteditors. Meistens weisen Programme nach der erstmaligen Codierung Fehler auf. Dies kö nnen sein: Syntaxfehler (Fehler in der Grammatik) Semantikfehler (Das Programm macht nicht das, was es soll.)
Problem Welches Problem ist zu lösen? Was erwarte ich von meiner Lösung? Analyse / Modellierung algorithmische Beschreibung Wie lässt sich das Problem lösen? Programmierung / Codierung Programm Wie bringe ich meine Idee dem Rechner bei? Z.B. durch ein Java Programm? Übersetzung / Compilierung ausführbares Programm Wie muss der ausführbare Code aussehen? Z.B. Java Bytecode oder Maschinencode? Ausführung / Interpretierung Problemlösung Ist das Problem gelöst?
Mein erstes Java-Programm public class Berechnung { public static void main(string[] args) { int i; i = 3 + 4; System.out.println(i); } } Das Programm berechnet 3 plus 4 und gibt das Ergebnis aus! - Compilierung und Ausfü hrung
Ausdruck, Variable, Zuweisung i = 3 + 4; Rechts vom Gleichheitszeichen findet eine Berechnung statt. Solch eine Berechnungsvorschrift heißt Ausdruck. Zu einem Ausdruck geh ö rt immer ein Wert. Links steht der Name einer Variablen (hier i). Dieser wird der Wert des Ausdrucks zugewiesen. Man bezeichnet dies als Zuweisung. Eine Zuweisung ist eine spezielle Form einer Anweisung. Einfache Anweisungen werden durch ein Semikolon (;) abgeschlossen.
Ganze Zahlen und Gleitkommazahlen Java unterscheidet zwischen ganzen Zahlen und Gleitkommazahlen. Beispiele fü r ganze Zahlen: 0 1-1 2147483647 Beispiele fü r Gleitkommazahlen: 0.0 1.0-1.0 2147483647.0 42.314159-3.7E2 1.9E-17.12345
Variablendeklaration int i; Damit geben wir bekannt, daß wir eine Variable mit dem Namen i verwenden wollen. Wir bezeichnen dies als Variablendeklaration. In Java gilt streng: Jede Variable muß vor ihrer Verwendung deklariert werden (declare before use). Ebenfalls gilt streng: Zu jeder Variablen gehö rt ein Datentyp. Hier int, d.h. ganze Zahlen (genauer ganze Zahlen zwischen 2 31 und 2 31 1).
Methodenaufruf System.out.println(i); System.out.println ist der Name einer Methode (ein Unterprogramm), mit der wir Text und Zahlen auf dem Bildschirm ausgeben kö nnen. In Klammern folgt nach dem Methodenname das, was wir der Methode wollen. Hier: der Wert der Variablen i. ü bergeben Die Methode System.out.println ist flexibel einsetzbar. Statt einer Zahl kö nnen wir auch Text ausgeben lassen: System.out.println("Das Ergebnis ist: "); System.out.println(i);
Will man beides in einer Zeile ausgeben, kö nnen wir System.out.print("Das Ergebnis ist: "); System.out.println(i); oder System.out.println("Das Ergebnis ist: " + i); verwenden.
Blö cke Java nutzt zur Strukturierung des Quelltextes sogenannte Blö cke. Ein Block wird durch { und } eingeschlossen. Unser Beispielquelltext hat zwei Blö cke: 1. Die Klasse Eine Klasse ist in Java die oberste Struktureinheit. Sie sieht folgendermaßen aus: public class Klassenname {... } Wichtig: Der Dateiname, in der Du den Quelltext der Klasse speichern, muss Klassenname.java lauten.
2. Die Hauptmethode Methoden sind Struktureinheiten unterhalb von Klassen. Jede Klasse, die ein ausfü hrbares Programm darstellen soll, muß eine Methode mit dem Namen main besitzen: public static void main(string[] args) {... } Den Rest der ersten Zeile der Methode mu sst Du bis auf weiteres genau so wie hier angegeben verwenden.
Kommentare Wenn wir (oder andere) nach lä ngerer Zeit einen Java-Quelltext analysieren, werden wir uns u.u. nicht mehr an den Sinn jeder Anweisung erinnern. Deshalb ist die Kommentierung von Programmen von großer Wichtigkeit. Java bietet hierfü r drei verschiedene Mö glichkeiten: Zeilenkommentar a = b + c; // dies ist ein Kommentar Mehrzeiliger Kommentar /* Kommentar... mehr Kommentar... letzte Kommentarzeile... */
Dokumentationskommentar Solche Kommentare beginnen mit /** und enden mit */. Es sind spezielle Kommentare, aus denen mit dem Programm javadoc eine HTML-Dokumentation in standardisierter Form erzeugt werden kann. /** * Dieses Programm berechnet die Lottozahlen von naechster * Woche. Dabei erreicht es im Schnitt eine Genauigkeit * von 99,5% * * @author Hans Mustermann * @date 1998-10-26 * @version 1.0 */
Bezeichner Wir werden spä ter oft in die Verlegenheit kommen, irgendwelchen Dingen Namen geben zu mü ssen, z.b. einer Variablen als Platzhalter, um eine Rechnung mit verschiedenen Werten durchfü hren zu kö nnen. In Programmiersprachen heißen solche Namen Bezeichner. Bezeichner bestehen aus: Buchstaben a,b,...,y,z,a,...,z dem Unterstrich dem Dollarzeichen $ Ziffern 0,...,9 Darü berhinaus gelten folgende Regeln: - Bezeichner mü ssen mit einem Buchstaben, dem Unterstrich oder dem Dollarzeichen beginnen.
- Reservierte Wö rter dü rfen nicht als Bezeichner verwendet werden. Gü ltige Bezeichner (in Java): Hallo Welt _H_A_L_L_O_ hallo123 hallo 123 Keine gü ltigen Bezeichner (in Java) sind: 101Dalmatiner Das war s Hallo Welt class beginnt mit einer Ziffer Das Zeichen ist nicht erlaubt Leerzeichen ist nicht erlaubt ist ein reserviertes Wort
Literale Ein Literal bzw. eine Literalkonstante beschreibt einen konstanten Wert, der sich innerhalb eines Programms nicht ä ndern kann. Literale haben, abhä ngig von ihrem Typ, vorgeschriebene Schreibweisen: ganze Zahlen (z.b. 23 oder -166), Gleitkommazahlen (z.b. 3.14), Wahrheitswerte (true und false), einzelne Zeichen (z.b. a ), Zeichenketten (z.b. "Hallo Welt"), das sogenannte Null-Literal fü r Referenzen, dargestellt durch die Literalkonstante null.
Reservierte Wö rter und Schlü sselwö rter Schlü sselwö rter sind Wö rter, die mit einer vordefinierten symbolischen Bedeutung belegt sind. Solche Schlü sselwö rter dü rfen ebenso wie die Literalkonstanten true, false und null nicht als Bezeichner verwendet werden. abstract assert boolean break byte case catch char class const continue default do double else extends final finally float for goto if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
Trennzeichen und Interpunktionszeichen Zu welcher Pferderasse gehö ren Blumentopferde? Heißt es der, die oder das Kuhliefumdenteich? Auch der Java-Compiler muß in der Lage sein, einzelne Wö rter und Literale voneinander zu trennen. Hierzu dienen: Bezeichner, reservierte Leerzeichen Zeilenendezeichen Tabulatorzeichen Kommentare Operatoren (z.b. + oder *) Interpunktionszeichen., ; ) ( { } [ ]
Operatoren und Interpunktionszeichen haben in Java eine besondere Bedeutung. Sie dü rfen daher nur dort eingesetzt werden, wo sie hingehö ren. Bezeichner, reservierte Wö rter und Literale mü ssen durch mindestens eines der obigen Symbole voneinander getrennt werden. Hierbei ist es in Java eigentlich egal, welche Trennzeichen man verwendet und wie viele davon. Die Zeile public static void main (String[] args) ist ä quivalent zu den folgenden Zeilen: public static/* */void main( //... String[] args)
Operatorsymbole Operatoren sind spezielle Symbole, die dazu dienen, jeweils bis zu drei unterschiedliche Werte die Operanden zu einem neuen Wert zu verknü pfen. Wir unterscheiden die Operatoren nach der Anzahl ihrer Operanden: monadische Operatoren sind Operatoren, die nur einen Operanden benö tigen. Beispiele: ++ oder -- dyadische Operatoren vernü pfen zwei Operanden. Beispiele: +, - oder == triadische Operatoren verknü pfen drei Operanden. Davon gibt es in Java nur einen: signum = x >= 0? 1 : -1;
import-anweisung Viele Dinge, die wir in Java benö tigen, befinden sich nicht im Kern der Sprache, sondern sind in Klassen ausgelagert, die sich wiederum in Paketen befinden. Dies gilt z.b. fü r die Bildschirmausgabe oder mathematische Funktionen wie Sinus oder Cosinus. Die meisten solcher Klassen mü ssen explizit importiert werden. Hierzu dient die import-anweisung. Beispielsweise sorgt die Anweisung import java.io.*; dafü r, daß alle Klassen des Pakets java.io importiert werden und somit fü r die Programmierung benutzt werden kö nnen. - import-anweisungen stehen vor der Klassendefinition.