Systematische Übersicht
Kommentar | // Dies ist ein
Kurzkommentar (bis Zeilenende) /* * Dies ist ein mehrzeiliger Kommentar */ /** Dies ist ein Kommentar, der von Java in * die Dokumentation der Klasse /* übernommen wird. |
Kommentare
werden vom Compiler nicht übersetzt, sie dienen nur der Übersicht. Programme sollte man stets so ausführlich kommentieren, dass ein fachkundiger Leser (bzw. der Programmautor nach einem halben Jahr) ohne allzu große Anstrengung ihren Sinn versteht. Hierzu dient auch, dass Variablen und Methoden möglichst aussagekräftige Namen bekommen. |
||||||||||||||||||||||||||||||
Programm | class NeueKlasse
{ public static void main(String[] args) { (Anweisungen) } } |
Ein Programm
ist in Java nichts anderes als eine spezielle
Klasse, die vom Betriebssystem
ausgeführt werden kann. Im Java-Editor kann der komplette Programm-rahmen für ein Java-Konsolenprogramm mit Klick auf erstellt werden. (Als Konsole bezeichnet man ein Gerät (Tastatur und nicht grafikfähiger Bildschirm) zur textbasierten Ein- und Ausgabe von Befehlen und Daten.) |
||||||||||||||||||||||||||||||
Klasse | class MeineKlassse
{ String name; double größe; double gewicht; double bmi(double gr,gew) { return gew/(gr*gr); } void stellDichVor() { System.out.println("Mein Name ist"+name+ " und mein BMI "+bmi(größe,gewicht)); } } |
Klassen
sind die Bausteine, aus denen Java-Anwendungen aufgebaut
sind. Aus einer Klasse können konkrete Objekte
erzeugt werden. Dazu stellt die Klasse sowohl
Variablen bereit, um Daten aufzunehmen,
als auch Methoden, die das Verhalten
dieser Objekte beschreiben. Klassennamen werden großgeschrieben. Sie müssen mit dem Dateinamen (MeineKlasse.java) übereinstimmen. Die Namen von Variablen und Methoden beginnen mit Kleinbuchstaben und werden durch Großschreibung im Wortinneren gegliedert. |
||||||||||||||||||||||||||||||
Klassenbibliotheken | java.lang.*;
// automatisch vorhanden import java.util.* import java.awt.* import java.io.* |
enthält
z.B. die Klassen System, Math, String, Integer, Double, ... mit
statischen Methoden. nötig z.B. für Scanner nötig für GUI |
||||||||||||||||||||||||||||||
Methoden |
public static void main(String[] args) { ... } |
Jede als Programm ausführbare Klasse
muss eine main-Methode enthalten, die
als public (öffentlich, von außerhalb
aufrufbar), static (zur Klasse selbst,
nicht zu einem konkreten Objekt dieser Klasse gehörig) und
void (ohne Ausgabewert) deklariert
sein muss. Einem Konsolenprogramm können beim Programmstart Parameter übergeben werden. Diese werden von Java im Stringfeld args gespeichert und stehen im Programm als args[0], args[1] usw. zur Verfügung. |
||||||||||||||||||||||||||||||
Methodenaufruf
im Programm |
System.out.println(); bodyMassIndex = bmi(größe,gewicht); |
Methodenaufrufe erkennt man an den
runden Klammern. Hier wird die Methode println() des Objekts out aus der Klasse System aufgerufen. Diese Art des Methodenaufrufs heißt auch Anweisung. Hier wird der Variable bodyMassIndex das Ergebnis der Methode bmi() zugewiesen. Diese Art des Methodenaufrufs heißt auch Funktion. |
||||||||||||||||||||||||||||||
Trennzeichen | ; |
Nach jeder Anweisung steht ein
Semikolon Das
Leerzeichen und der Zeilenwechsel unterbrechen Anweisungen
nicht. |
||||||||||||||||||||||||||||||
Anweisungsblock | class XY {
main { } } |
Ein Anweisungsblock in Java fasst
mehrere Anweisungen zusammen, etwa die Anweisungen, die zu einer
Klasse oder Methode gehören. Er ist von geschweiften
Klammern begrenzt. Eine Variable "lebt" immer nur in dem
Anweisungs-block, innerhalb dessen sie deklariert worden ist.
|
||||||||||||||||||||||||||||||
Eingabe | import
java.utils.*; Eingabe= new Scanner(System.in); String s = Eingabe.next(): String s = Eingabe.nextLine(); int i = Eingabe.nextInt(); double d = Eingabe.nextDouble(); |
Vor Beginn
der eigentlichen Klasse wird die Utils-Bibliothek importiert. Zu Beginn der main-Methode wird ein Objakt der Klasse Scanner erzeugt. Bit dem Scanner können Strings, Zeilen (mit Leerzeichen) Integer oder double eingelesen werden; |
||||||||||||||||||||||||||||||
Fehler abfangen |
Eingabe= new Scanner(System.in); String antwort = Eingabe.next(); try { alter = Integer.parseInt(antwort); } catch (Exception e) { System.out.println("Falsche Eingabe."); return; } |
Wenn die Operation nach try (hier eine Umwandlung String --> Integer) fehlschlägt, wird die von Java erzeugte Exception abgefangen und stattdessen eine benutzerdefinierte Fehlermeldung ausgegeben. Baut man alles (außer der Scannerdeklaration) in eine Schleife ein, so kann der Vorgang so lange wiederholt werden, bis die Eingabe gültig ist. | ||||||||||||||||||||||||||||||
Ausgabe |
System.out.println(); System.out.print(s); System.out.println(s); |
Leerzeile
ausgeben. String s ausgeben (ohne Zeilenwechsel) String s ausgeben (mit Zeilenwechsel); |
||||||||||||||||||||||||||||||
Variablen | int p; int anzahl = 312; double körperGewicht = 105.7; String name = "Oskar"; char f = 'c'; erwachsen = alter>=18; |
Variablen stellen Speicherplatz für
Zahlen und Texte bereit. Vor der erstmaligen Verwendung müssen Variablen
deklariert werden (der
Variablentyp muss angegeben werden).
Dabei können sie gleichzeitig initialisiert
(mit einem Anfangswert versehen) werden. Der Speicherplatz
für primitive Variablen (Variablen
mit festem Speicherbedarf) wird beim Kompilieren des Programms direkt
im Programm reserviert, für Strings wird dagegen nur eine
Referenz angelegt (die Adresse des
tatsächlichen Speicherplatzes) |
||||||||||||||||||||||||||||||
Wertzuweisung | anzahl = 5; mittelWert = (a+b)/2; i++; |
Einer
Variablen wird ein Wert zugewiesen (es kann auch das Ergebnis
einer Formel sein) oder ihr Wert wird modifiziert.
Mehr... |
||||||||||||||||||||||||||||||
Variablentypen |
|
|||||||||||||||||||||||||||||||
Typecast | int i = 5;
double d = i; double d = 8.3; int i = (int) d; double d = 1/5; double d = 1.0/5; |
Zuweisungen
an Typen mit größerer Genauigkeit sind problemlos möglich. Zuweisungen an Typen mit geringerer Genauigkeit müssen durch einen Typecast bestätigt werden. Dies würde eine Ganzzahldivision auslösen. So kommt wirklich 0.2 heraus. |
||||||||||||||||||||||||||||||
Zahl->String | int i = 8;
String s = String.valueOf(i); int n = 4; String s = "Hauptstraße"+n; |
Manchmal
muss man explizit umwandeln, manchmal geht es auch automatisch. Mehr... |
||||||||||||||||||||||||||||||
String -> Zahl | String s =
"46"; int i = Integer.parseInt(s); double d = Double.parseDouble("4.8"); |
|||||||||||||||||||||||||||||||
Stringverkettung | String name = vorname +" "+nachname; | + verkettet Strings Mehr... | ||||||||||||||||||||||||||||||
Stringanalyse |
String1.equals(String2) : boolean String1.compareTo(String2) : integer String1.contains(String2) : boolean String.replace(char1 ,char2) : String String.length() : integer String.indexOf(char) : integer String.charAt(integer): char |
Mehr... | ||||||||||||||||||||||||||||||
Stringformatierung |
System.out.format("Sende mir %3d Stück.",k) System.out.format("Zahle bitte %5.2f" €", b); |
Baue
Integer k mit 3 Stellen in Ausgabe ein. Baue Double b mit insgesamt 5 Stellen, davon 2 Nachkommastellen in Ausgabestring ein. |
||||||||||||||||||||||||||||||
Steuerzeichen | \n
\t \b \f \r \" \' \\ \x00 \u0000 |
neue Zeile Tabulator Backspace Seitenvorschub Wagenrücklauf Anführungszeichen im String Anführungszeichen im String Backslash im String Hexadezimazahl Unicode-Zeichen über Nummer |
||||||||||||||||||||||||||||||
Zahloperatoren |
Ganzzahltypen: + - * / % Kommazahlen: + - * / double w = Math.sqrt(r); double p = Math.pow(b,e) double d = Math.random()*10; int i = (int) Math.random()*6+1 |
Ganzzahldivision liefert nur ganzzahligen Anteil, Rest kann mit % ermittelt werden. w wird die Quadratwurzel von r zugewiesen. p wird b hoch e zugewiesen. ermittelt wird eine Kommazahl 0<=d<10 ergibt eine ganze Zufallszahl zwischen 1 und 6 |
||||||||||||||||||||||||||||||
if ( ) { } else { } | if
(alter<14) System.out.println("Kind"); if (alter>=18) { erwachsen=true; } if (erwachsen) { System.out.println("Alkohol erlaubt"); } else { System.out.println("Alkohol verboten"); } |
Die
Ausführung einzelner Anweisungen oder ganzer
Anweisungsblöcke kann von einer Bedingung abhängig gemacht
werden. |
||||||||||||||||||||||||||||||
And - Or - Not | (a>0) &&
(a<5) // Alle Bedingungen gelten (a<0) || (a>5) // Mind. eine Bedingung gilt !(a<3) // Bedingung darf nicht gelten |
Anstelle einer einzelnen Bedingung können auch verknüpfte Bedingungen stehen. | ||||||||||||||||||||||||||||||
Boolesche Variable | boolean jugendlich = (alter>=14) && (alter<18) | Das Ergebnis einer Bedingung kann in einer booleschen Variable gespeichert werden. | ||||||||||||||||||||||||||||||
Zahlvergleich | a<b, a<=b, a==b, a>b, a>=b | Achtung: doppeltes Gleichheitszeichen! | ||||||||||||||||||||||||||||||
Stringvergleich | if (antwort.equals("ja")) if (s1.compareTo(s2)<0) |
Test auf
Gleichheit Mehr... Test ob String s1 alphabetisch vor s2 kommt |
||||||||||||||||||||||||||||||
switch ( ) case { } | int e=8;
switch (e) { case 1 : Anweisung1; Anweisung2; break; case 2 : ... break; default : Anweisung1; Anweisung2; } |
Abhängig
von der Integervariablen hinter switch wird an verschiedenen
Stellen in den Anweisungsblock eingestiegen und beim nächsten
break wieder ausgestiegen. default deckt die von der Variablen nicht erfassten Fälle ab. Mehr... |
||||||||||||||||||||||||||||||
do { } while ( ) | String a =
""; do { System.out.println("ja oder nein?"); a = Eingabe.next(); } while (!a.equals("ja") && a.equals("nein")); |
Block wird wiederholt, solange Bedingung nicht erfüllt ist
(mindestens einmal). Mehr... |
||||||||||||||||||||||||||||||
while ( ) { } | int a = 5,
f = 0; while (a>1) { f = f*a; a--; } |
Block wird wiederholt, solange Bedingung nicht erfüllt ist
(eventuell gar nicht). Mehr... |
||||||||||||||||||||||||||||||
for ( ) { } | for (int
i=0; i<10; i++) { System.out.println(i); } |
Zählschleife. In der runden Klammer wird Laufvariable
initialisiert, Bedingung für Ausstieg genannt, Laufvariable
inkrementiert (oder dekrementiert) Mehr... |
||||||||||||||||||||||||||||||
break; | Schleife wird vorzeitig verlassen | |||||||||||||||||||||||||||||||
continue; | For-Schleife wird vor Ende des Blocks mit nächstem Wert fortgesetzt | |||||||||||||||||||||||||||||||
return; | Klasse wird beendet und an die auffordernde Ebene zurückgesprungen. | |||||||||||||||||||||||||||||||
Zeit nehmen | long start =
System.currentTimeMillis(); // Platz für den eigentlichen Vorgang double dauer = ((double) System.currentTimeMillis()-start) / 1000; System.out.println("Dauer: "+dauer+ "Sekunden."); |
Vor dem eigentlichen Vorgang wird die aktuelle zeit in der Variablen start gespeichert, hinterher wird die Endzeit ermittelt und die Startzeit abgezogen. Das System arbeitet in Millisekunden, deshalb ist eine Division durch 1000 notwendig. |