Befehlsreferenz Java: Unterschied zwischen den Versionen

Aus Informatik-Box
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „{| {{prettytable}} ! Beschreibung ! Syntax ! Beispiel |- | '''if-Anweisung (Bedingte Anweisung)''' | Datei:Java-Syntax-If.svg | <syntaxhighlight lang="java…“)
 
Keine Bearbeitungszusammenfassung
 
(81 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Kurzlink|befehle-java}}
Diese Übersicht fasst die (für die Schule) wichtigsten Java-Befehle und -Konstrukte auf einer Seite zusammen.
Eine vollständige Liste aller Java-Befehle kann in der [https://link.ngb.schule/java-api Java API Dokumentation] nachgeschlagen werden.
Gezieltere Informationen gibt es hier im Wiki, zum Beispiel im [[Lernpfad:Objektorientierte Programmierung mit Java]] oder [[Lernpfad:Würfelspiel in Java]].
Das Inhaltsverzeichnis und die Suchfunktion in eurem Browser helfen euch beim Auffinden von Informationen. Drückt dazu {{Button|Strg}}+{{Button|F}} und gebt einen Suchbegriff ein (z.B. „Zufall“).
Die Syntax der Sprachelemente ist zum Teil als [[Syntaxdiagramm]] dargestellt.
== Kommentare ==
Zeilen, die mit <code>//</code> beginnen werden vom Programm ignoriert. Sie dienen dazu, den Quelltext mit ''Kommentaren'' zu versehen, die das Verständnis erleichtern.
<syntaxhighlight lang="java">
// Ich werde nicht ausgeführt
// System.out.println("Ich auch nicht");
System.out.println("Ich aber"); // Ab hier wird wieder ignoriert
</syntaxhighlight>
Um größere Teile des Quelltextes zu ignorieren können die Symbole <code>/*</code> und <code>*/</code> benutzt werden.
<syntaxhighlight lang="java">
/*
Ich werde nicht ausgeführt
System.out.println("Ich auch nicht");
*/
System.out.println("Ich aber");
</syntaxhighlight>
=== JavaDoc Kommentare ===
[[wikipedia:JavaDoc|JavaDoc]] ist eine besondere Form von Kommentaren, die dazu genutzt werden, Klassenelemente zu dokumentieren. Da sie eine vorgegebene Struktur haben, können sie automatisch verarbeitet werden und zum Beispiel als Website ausgegeben werden. Die [# Java-API Dokumentation] ist zum Beispiel so entstanden.
Ein ''JavaDoc'' Kommentar hat diese Form:
<syntaxhighlight lang="java">
/**
* Kurze Beschreibung der Methode
*
* Ggf. ausführliche Beschreibung.
* @param a Erster Summand
* @param b Zweiter Summand
* @return Summe der Parameter
*/
public int summe( int a, int b ) {
    return a+b;
}
</syntaxhighlight>
Weiter Beispiele und Beschreibungen finden sich im [https://de.wikibooks.org/wiki/Java_Standard:_Javadoc Wikibook Java Standard].
{{BlueJ}} kann die JavaDoc-Dokumentation direkt anzeigen, indem man oben rechts im Editor con "Quelltext" auf "Dokumentation" wechselt.
== Datentypen ==
{| {{prettytable}}
! Name
! Beschreibung
! Datentyp
! Beispielwerte
|-
| Integer
| Ganze Zahlen
| <code>int</code>
| <code>1</code>, <code>4</code>, <code>19</code>, <code>1295</code>
|-
| Double
| Gleitkommazahlen
| <code>double</code>
| <code>4.5</code>, <code>6.1</code>, <code>7.5</code>
|-
| Boolean
| Wahrheitswerte
| <code>boolean</code>
| <code>true</code>, <code>false</code>
|-
| Character
| Einzelne Unicode-Zeichen
| <code>char</code>
| <code>'x'</code>, <code>'a'</code>
|}
Eine vollständige Liste ist im [[Lernpfad:Objektorientierte_Programmierung_mit_Java/Datentypen_und_Variablen#Primitive_Datentypen|Lernpfad:Objektorientierte Programmierung mit Java]] zu finden.
=== Strings (Texte) ===
Strings bestehen aus einer Kette von <code>char</code>s, sie gehören aber nicht zu den ''primitiven Datentypen'', sondern sind ''Objekte''. Daher gelten für Strings einige Besonderheiten:
# [[java8:java/lang/String|Strings besitzen Methoden]], um mit den enthaltenen Zeichnketten zu arbeiten:
## <code>int String.length()</code> - Ermittelt die Länge der Zeichenkette.
## <code>String String.toUpperCase()</code> - Erstellt eine Kopie der Zeichenkette, die nur aus Großbuchstaben besteht.
## Und noch viele mehr ...
# Strings müssen mit der <code>equals</code>-Methode verglichen werden, nicht mit <code>==</code>:<syntaxhighlight lang="java">String hallo = "Hallo, Welt!";
if( hallo.equals("Hallo und Tschüß!") ) {
System.out.println("Die Strings passen nicht!");
}</syntaxhighlight>
=== Typumwandlungen ===
Datentypen können ineinander umgewandelt werden (Typecasting). Dazu wird der Zieltyp in runden Klammern dem Wert voran gestellt.
<syntaxhighlight lang="java">
int zahl = (int) 4.563;
boolean wahrheit = (boolean) zahl;
</syntaxhighlight>
Je nachdem, welche Typen vorkommen, wird ein anderes Vorgeben beim Umwandeln benutzt. Zum Beispiel werden beim <code>double</code> Wert <code>4.563</code> im Beispiel oben einfach die Nachkommastellen angeschnitten, um daraus den <code>int</code> Wert <code>4</code> zu machen. (Es wird also nicht gerundet!)
== Operatoren ==
=== Rechenoperatoren ===
{| {{prettytable}}
|-
! Operator
! Beschreibung
! Beispiel
|-
| <pre>+
-
*
/</pre>
| Addition, Subtraktion, Multiplikation, Division
| <pre>5 + 3 // = 8
5 - 3 // = 2
5 * 3 // = 15
5 / 2 // = 2.5</pre>
|-
| <pre>+=
-=
*=
/=</pre>
| Kurzformen für die Veränderung einer Zahlvariablen.
| <pre>i += 3 // i = i + 1
i -= 3 // i = i - 1
i *= 3 // i = i * 3
i /= 2 // i = i / 2</pre>
|-
| <code>%</code>
| [[wikipedia:Division_mit_Rest#Modulo|Modulo]]-Operator: Berechnet den Rest eine ganzzahligen Division.
| <pre>5 % 3 // = 2
1 % 2 // = 1
8 % 4 // = 0</pre>
|}
=== Vergleichsoperatoren ===
{| {{prettytable}}
|-
! Operator
! Beschreibung
! Beispiel
|-
| <code>==</code>
| Zwei primitive Datentypen auf Gleichheit prüfen.
| <code>5 == i</code>
|-
| <code>!=</code>
| Zwei primitive Datentypen auf Ungleichheit prüfen.
| <code>5 != i</code>
|-
| <code>&gt;</code>
| "größer als"
| <code>5 &gt; i</code>
|-
| <code>&lt;</code>
| "kleiner als"
| <code>5 &lt; i</code>
|-
| <code>&gt;=</code>
| "größer oder gleich"
| <code>5 &gt;= i</code>
|-
| <code>&lt;=</code>
| "kleiner oder gleich"
| <code>5 &lt;= i</code>
|-
| <code>{{Java API|java.lang.String|equals-java.lang.Object-|equals(Object o)}}</code>
| String-Vergleiche
| <code>"Hallo".equals("Welt")</code>
|}
=== Logische Verknüpfungen ===
{| {{prettytable}}
|-
! Operator
! Beschreibung
! Beispiel
|-
| <code>&&</code>
| "UND": Ist wahr, wenn der linke und der rechte Ausdruck wahr sind.
| <code>true && (a == b)</code>
|-
| <code>&#124;&#124;</code>
| "ODER": Ist wahr, wenn der linke oder der rechte Ausdruck wahr sind (oder auch beide).
| <code>true &#124;&#124; (a == b)</code>
|-
| <code>!</code>
| "NICHT": Negiert den Ausdruck.
| <code>!(a == b)</code>
|}
== Allgemeine Programmkonstrukte ==
=== Variablen ===
==== Lokale Hilfsvariablen ====
==== Objektvariablen ====
==== Parametervariablen ====
==== Rückgabevariablen ====
=== Methoden ===
== Programmkonstrukte zur Ablaufsteuerung ==
=== Bedingte Anweisungen ===
{| {{prettytable}}
{| {{prettytable}}
! Beschreibung
! Beschreibung
Zeile 4: Zeile 215:
! Beispiel
! Beispiel
|-
|-
| '''if-Anweisung (Bedingte Anweisung)'''
| '''if-Anweisung'''
| [[Datei:Java-Syntax-If.svg]]
 
(Bedingte Anweisung)
| [[Datei:Java-Syntax-If.png|400px]]
| <syntaxhighlight lang="java">
| <syntaxhighlight lang="java">
if( i > 5 ) {
if( i > 5 ) {
Zeile 13: Zeile 226:
|-
|-
| '''if-else-Anweisung'''
| '''if-else-Anweisung'''
| [[Datei:Java-Syntax-Ifelse.svg]]
 
(Alternative)
| [[Datei:Java-Syntax-Ifelse.png|400px]]
| <syntaxhighlight lang="java">
| <syntaxhighlight lang="java">
if( i > 5 ) {
if( i > 5 ) {
Zeile 21: Zeile 236:
}
}
</syntaxhighlight>
</syntaxhighlight>
|-
| '''if-elseif-Anweisung'''
| [[Datei:Java-Syntax-Ifelseif.png|400px]]
| <syntaxhighlight lang="java">
if( i > 5 ) {
System.out.println('i ist grösser als 5');
} elseif( i < 3 ) {
System.out.println('i ist kleiner als 3');
} else {
System.out.println('i ist 3, 4 oder 5');
}
</syntaxhighlight>
|-
| '''switch-Anweisung'''


Kurzschreibweise für viele ''if-elseif-Anweisungen'' hintereinander. Die ''switch-Anweisung'' funktioniert nur mit primitiven Datentypen. (Also z.B. mit <code>char</code>, aber nicht mit <code>String</code>.)
| [[Datei:Java-Syntax-Switch.png|400px]]
| <syntaxhighlight lang="java">
int i;
switch( i ) {
case 1:
    System.out.println("1 wurde erkannt!");
    break;
case 2:
    System.out.println("2 wurde erkannt!");
    break;
    default:
    System.out.println("Keine 1 oder 2!");
    break;
}
</syntaxhighlight>
|}
|}
=== Schleifen ===
{| {{prettytable}}
! Beschreibung
! Syntax
! Beispiel
|-
| '''while-Schleife'''
(Kopfgesteuerte Schleife, Bedingte Schleife)
| [[Datei:Java-Syntax-While.png]]
| <syntaxhighlight lang="java">
int i = 0;
while( i < 10 ) {
System.out.println("i ist jetzt " + i);
i += 1;
}
</syntaxhighlight>
|-
| '''do-while-Schleife'''
(Fußgesteuerte Schleife)
| [[Datei:Java-Syntax-Dowhile.png]]
| <syntaxhighlight lang="java">
boolean isRunning = true;
int i = 0;
do {
System.out.println("i ist jetzt " + i);
    isRunning = 1 < 10;
} while( isRunning );
</syntaxhighlight>
|-
| '''for-Schleife'''
(Zählschleife)
| [[Datei:Java-Syntax-For.png]]
| <syntaxhighlight lang="java">
for( int i = 0; i < 100; i++ ) {
System.out.println("i ist jetzt " + i);
}
</syntaxhighlight>
|}
=== Fehlerbehandlung ===
{| {{prettytable}}
! Beschreibung
! Syntax
! Beispiel
|-
| '''try-catch-Anweisung'''
| [[Datei:Java-Syntax-Trycatch.png]]
| <syntaxhighlight lang="java">
try {
// Anweisungen die ggf. einen Fehler (Exception) produzieren
// Sobald ein Fehler produziert wurde, wird in den catch-Teil gesprungen
} catch( Exception e1 ) {
System.err.println("Ein Fehler ist aufgetreten!");
}
</syntaxhighlight>
|-
| '''try-catch-finally-Anweisung'''
| [[Datei:Java-Syntax-Trycatch.png]]
| <syntaxhighlight lang="java">
try {
// Anweisungen die ggf. einen Fehler (Exception) produzieren
// Sobald ein Fehler produziert wurde, wird in den catch-Teil gesprungen
} catch( Exception e1 ) {
System.err.println("Ein Fehler ist aufgetreten!");
} finally {
System.err.println("Diese Anweisung wird auf jeden Fall ausgeführt.");
}
</syntaxhighlight>
|}
Statt <code>Exception</code> können auch konkrete Fehler abgefangen werden. Dien Liste der Standard-Exceptions findet sich unter {{Java API|java.lang.Exception}}. (Es können aber auch eigene Exceptions erstellt werden.) Es ist auch erlaubt mehrere <code>catch</code>-Blöcke anzugeben:
<syntaxhighlight lang="java">
try {
// Anweisungen die ggf. mehrere Fehler (Exceptions) produzieren
// z.B. InputMismatchException oder NoSuchElementException
    // in Scanner#nextInt().
} catch( InputMismatchException e1 ) {
System.err.println("Eingabe kann nicht in Zahl umgewandelt werden!");
} catch( NoSuchElementException e2 ) {
System.err.println("Keine weitere Eingabe vorhanden!");
}
</syntaxhighlight>
== Klassen aus der Java-API ==
=== Ausgaben ===
{| {{prettytable}}
! Beschreibung
! Beispiel
|-
| Ausgabe von Text in der Konsole
| <syntaxhighlight lang="java">
System.out.print("Hallo, Welt!");
</syntaxhighlight>
|-
| Ausgabe von Text mit Zeilenumbruch in der Konsole
| <syntaxhighlight lang="java">
System.out.println("Hallo, Welt!");
</syntaxhighlight>
|-
| Ausgabe von [http://public.beuth-hochschule.de/~grude/PrintfAppletHilfe.html Text mit Formatierungen] in der Konsole
| <syntaxhighlight lang="java">
System.out.printf("%s, %s!\n", "Hallo", "Welt");
</syntaxhighlight>
|-
| Ausgabe von Text in der Fehlerkonsole
| <syntaxhighlight lang="java">
System.err.println("Hallo, Welt!");
</syntaxhighlight>
|}
=== {{Java API|java.lang.Math}} ===
Sammlung von mathematischen Hilfsfunktionen (Runden, Wurzel, Logarithmus, ...). Ein vollständige Übersicht findet ihr in der [[java8:java/lang/Math|Java API Dokumentation]].
{| {{prettytable}}
! Beschreibung
! Signatur
! Beispiel
|-
| Rundet die Zahl <code>zahl</code>.
| {{Java API|java.lang.Math|round-double-|long Math.round(double zahl)}}
| <syntaxhighlight lang="java">
long gerundet = Math.round(14.235); // 14
</syntaxhighlight>
|-
| Zufallszahlen zwischen 0 und 1 erzeugen. (1 wird nie erzeugt.)
| {{Java API|java.lang.Math|random--|long Math.random()}}
| <syntaxhighlight lang="java">
double zufall = Math.random();
</syntaxhighlight>
|-
| Quadratwurzel berechnen.
| {{Java API|java.lang.Math|sqrt-double-|double Math.sqrt(double radikant)}}
| <syntaxhighlight lang="java">
double wurzel = Math.sqrt(2); // 1.41
</syntaxhighlight>
|}
=== {{Java API|java.util.Random}} ===
Hilfsklasse, um Zufallswerte verschiedener Typen zu erzeugen.
{{Hinweis|Die Klasse muss zuerst ''importiert'' werden. Schreibe in Zeile 1:<br/>
<code>import java.util.Random;</code>}}
{| {{prettytable}}
! Beschreibung
! Signatur
! Beispiel
|-
| Zufällige ganze Zahl von <code>0</code> bis <code>max-1</code> erzeugen.
| {{Java API|java.util.Random|nextInt-int-|int nextInt(int max)}}
| <syntaxhighlight lang="java">
Random rand = new Random();
// Zufallszahl von 0 bis 99
int zufall = rand.nextInt(100);
// Zufallszahl von 50 bis 69
int zufall2 = rand.nextInt(20)+50;
</syntaxhighlight>
|-
| Zufälligen Wahrheitswert erzeugen.
| {{Java API|java.util.Random|nextBoolean--|boolean nextBoolean()}}
| <syntaxhighlight lang="java">
Random rand = new Random();
boolean zufall = rand.nextBoolean();
</syntaxhighlight>
|-
| Zufällige Zahl zwischen 0 und 1 erzeugen, wobei 1 niemals erzeugt wird (exklusive).
| {{Java API|java.util.Random|nextDouble--|double nextDouble()}}
| <syntaxhighlight lang="java">
Random rand = new Random();
double zufall = rand.nextDouble();
</syntaxhighlight>
|}
=== {{Java API|java.util.Scanner}} ===
[[java8:java/util/Scanner|Die Klasse Scanner]] ist eine Hifsklasse, die das Einlesen von Benutzereingaben in der Konsole erleichtert. Zunächst muss ein Objekt der Klasse mit dem Parameter <code>System.in</code> erstellt werden: <syntaxhighlight lang="java" inline=1>Scanner konsole = new Scanner(System.in);</syntaxhighlight>.
{{Hinweis|Die Klasse muss zuerst ''importiert'' werden. Schreibe in Zeile 1:<br/>
<code>import java.util.Scanner;</code>}}
{| {{prettytable}}
! Beschreibung
! Signatur
! Beispiel
|-
| Einlesen einer ganzen Zahl. Ist die Eingabe keine Zahl, wird eine {{Java API|java.util.InputMismatchException}} produziert. (Siehe [[{{PAGENAME}}#Fehlerbehandlung|Fehlerbehandlung]] zum Umgang mit Exceptions.)
| {{Java API|java.util.Scanner|nextInt--|int nextInt()}}
| <syntaxhighlight lang="java">
Scanner konsole = new Scanner(System.in);
int eingabe = konsole.nextInt();
</syntaxhighlight>
|-
| Einlesen einer Textzeile. Die Eingabe muss mit {{Button|ENTER}} abgeschlossen werden.
| {{Java API|java.util.Scanner|nextLine--|String nextLine()}}
| <syntaxhighlight lang="java">
Scanner konsole = new Scanner(System.in);
String eingabe = konsole.nextLine();
</syntaxhighlight>
|}
=== Datentyp-Klassen ===
==== {{Java API|java.lang.String}} ====
{| {{prettytable}}
! Beschreibung
! Signatur
! Beispiel
|-
| Anzahl Zeichen in der Zeichenkette.
| {{Java API|java.lang.String|length--|int length()}}
| <syntaxhighlight lang="java">
String text = "Hallo, Welt!";
int zeichen = text.length(); // 12
</syntaxhighlight>
|-
| Gibt das Zeichen an Index <code>i</code> zurück. Das erste Zeichen hat den Index <code>0</code>.
| {{Java API|java.lang.String|charAt-int-|char charAt( int i )}}
| <syntaxhighlight lang="java">
char firstChar = "Hallo, Welt!".charAt(0); // 'H'
char fourthChar = "Hallo, Welt!".charAt(3); // 'l'
</syntaxhighlight>
|-
| Wandelt alle Zeichen in Großbuchstaben um.
| {{Java API|java.lang.String|toUpperCase--|String toUpperCase()}}
| <syntaxhighlight lang="java">
String text = "Hallo, Welt!";
String upper = text.toUpperCase(); // HALLO, WELT!
</syntaxhighlight>
|-
| Wandelt alle Zeichen in Kleinbuchstaben um.
| {{Java API|java.lang.String|toLowerCase--|String toLowerCase()}}
| <syntaxhighlight lang="java">
String text = "Hallo, Welt!";
String upper = text.toLowerCase(); // hallo, welt!
</syntaxhighlight>
|-
| Findet die Position im String, an der der Text <code>suchen</code> zum ersten Mal vorkommt. Kommt der Text gar nicht vor, dann wird <code>-1</code> zurück gegeben. Das erste Zeichen hat den Index <code>0</code>.
| {{Java API|java.lang.String|indexOf-java.lang.String-|int indexOf( String suchen )}}
| <syntaxhighlight lang="java">
String text = "Hallo, Welt!";
int position = text.indexOf(","); // 5
text.indexOf("Foo"); // -1
</syntaxhighlight>
|-
| Ersetzt das erste vorkommen von <code>suche</code> mit <code>ersatz</code>.
| {{Java API|java.lang.String|replaceFirst-java.lang.String-java.lang.String-|String replaceFirst(String suche, String ersatz)}}
| <syntaxhighlight lang="java">
String text = "Hallo, Welt!";
text.replaceFirst("Welt", "Wald"); // Hallo, Wald!
</syntaxhighlight>
|}
==== {{Java API|java.lang.Integer}} ====
{| {{prettytable}}
! Beschreibung
! Signatur
! Beispiel
|-
| Konvertiert einen String in eine Zahl.
| {{Java API|java.lang.Integer|parseInt-java.lang.String-|int Integer.parseInt(String text)}}
| <syntaxhighlight lang="java">
String text = "5";
int zahl = Integer.parseInt(text);
</syntaxhighlight>
|-
| Konvertiert eine Zahl in einen String.
| {{Java API|java.lang.Integer|toString-int-|String Integer.toString(int zahl)}}
| <syntaxhighlight lang="java">
int zahl = 5;
String alsText = Integer.toString(zahl);
</syntaxhighlight>
|}
Zu allen primitiven Datentypen gibt es eigene Datentyp-Klassen (sog. ''Wrapper-Klassen''):
* {{Java API|java.lang.Character}}
* {{Java API|java.lang.Byte}}
* {{Java API|java.lang.Short}}
* {{Java API|java.lang.Long}}
* {{Java API|java.lang.Double}}
* {{Java API|java.lang.Float}}
* {{Java API|java.lang.Boolean}}
[[Kategorie:Befehlsreferenz]][[Kategorie:Java]]

Aktuelle Version vom 13. März 2021, 14:46 Uhr

Diese Übersicht fasst die (für die Schule) wichtigsten Java-Befehle und -Konstrukte auf einer Seite zusammen.

Eine vollständige Liste aller Java-Befehle kann in der Java API Dokumentation nachgeschlagen werden.

Gezieltere Informationen gibt es hier im Wiki, zum Beispiel im Lernpfad:Objektorientierte Programmierung mit Java oder Lernpfad:Würfelspiel in Java.

Das Inhaltsverzeichnis und die Suchfunktion in eurem Browser helfen euch beim Auffinden von Informationen. Drückt dazu Strg+F und gebt einen Suchbegriff ein (z.B. „Zufall“).

Die Syntax der Sprachelemente ist zum Teil als Syntaxdiagramm dargestellt.

Kommentare

Zeilen, die mit // beginnen werden vom Programm ignoriert. Sie dienen dazu, den Quelltext mit Kommentaren zu versehen, die das Verständnis erleichtern.

// Ich werde nicht ausgeführt
// System.out.println("Ich auch nicht");
System.out.println("Ich aber"); // Ab hier wird wieder ignoriert

Um größere Teile des Quelltextes zu ignorieren können die Symbole /* und */ benutzt werden.

/*
Ich werde nicht ausgeführt


System.out.println("Ich auch nicht");
*/
System.out.println("Ich aber");

JavaDoc Kommentare

JavaDoc ist eine besondere Form von Kommentaren, die dazu genutzt werden, Klassenelemente zu dokumentieren. Da sie eine vorgegebene Struktur haben, können sie automatisch verarbeitet werden und zum Beispiel als Website ausgegeben werden. Die [# Java-API Dokumentation] ist zum Beispiel so entstanden.

Ein JavaDoc Kommentar hat diese Form:

/**
 * Kurze Beschreibung der Methode
 *
 * Ggf. ausführliche Beschreibung. 
 * @param a Erster Summand
 * @param b Zweiter Summand
 * @return Summe der Parameter
 */
public int summe( int a, int b ) {
    return a+b;
}

Weiter Beispiele und Beschreibungen finden sich im Wikibook Java Standard.

BlueJ kann die JavaDoc-Dokumentation direkt anzeigen, indem man oben rechts im Editor con "Quelltext" auf "Dokumentation" wechselt.

Datentypen

Name Beschreibung Datentyp Beispielwerte
Integer Ganze Zahlen int 1, 4, 19, 1295
Double Gleitkommazahlen double 4.5, 6.1, 7.5
Boolean Wahrheitswerte boolean true, false
Character Einzelne Unicode-Zeichen char 'x', 'a'

Eine vollständige Liste ist im Lernpfad:Objektorientierte Programmierung mit Java zu finden.

Strings (Texte)

Strings bestehen aus einer Kette von chars, sie gehören aber nicht zu den primitiven Datentypen, sondern sind Objekte. Daher gelten für Strings einige Besonderheiten:

  1. Strings besitzen Methoden, um mit den enthaltenen Zeichnketten zu arbeiten:
    1. int String.length() - Ermittelt die Länge der Zeichenkette.
    2. String String.toUpperCase() - Erstellt eine Kopie der Zeichenkette, die nur aus Großbuchstaben besteht.
    3. Und noch viele mehr ...
  2. Strings müssen mit der equals-Methode verglichen werden, nicht mit ==:
    String hallo = "Hallo, Welt!";
    if( hallo.equals("Hallo und Tschüß!") ) {
    	System.out.println("Die Strings passen nicht!");
    }
    

Typumwandlungen

Datentypen können ineinander umgewandelt werden (Typecasting). Dazu wird der Zieltyp in runden Klammern dem Wert voran gestellt.

int zahl = (int) 4.563;
boolean wahrheit = (boolean) zahl;

Je nachdem, welche Typen vorkommen, wird ein anderes Vorgeben beim Umwandeln benutzt. Zum Beispiel werden beim double Wert 4.563 im Beispiel oben einfach die Nachkommastellen angeschnitten, um daraus den int Wert 4 zu machen. (Es wird also nicht gerundet!)

Operatoren

Rechenoperatoren

Operator Beschreibung Beispiel
+
-
*
/
Addition, Subtraktion, Multiplikation, Division
5 + 3 // = 8
5 - 3 // = 2
5 * 3 // = 15
5 / 2 // = 2.5
+=
-=
*=
/=
Kurzformen für die Veränderung einer Zahlvariablen.
i += 3 // i = i + 1
i -= 3 // i = i - 1
i *= 3 // i = i * 3
i /= 2 // i = i / 2
% Modulo-Operator: Berechnet den Rest eine ganzzahligen Division.
5 % 3 // = 2
1 % 2 // = 1
8 % 4 // = 0

Vergleichsoperatoren

Operator Beschreibung Beispiel
== Zwei primitive Datentypen auf Gleichheit prüfen. 5 == i
!= Zwei primitive Datentypen auf Ungleichheit prüfen. 5 != i
> "größer als" 5 > i
< "kleiner als" 5 < i
>= "größer oder gleich" 5 >= i
<= "kleiner oder gleich" 5 <= i
equals(Object o) String-Vergleiche "Hallo".equals("Welt")

Logische Verknüpfungen

Operator Beschreibung Beispiel
&& "UND": Ist wahr, wenn der linke und der rechte Ausdruck wahr sind. true && (a == b)
|| "ODER": Ist wahr, wenn der linke oder der rechte Ausdruck wahr sind (oder auch beide). true || (a == b)
! "NICHT": Negiert den Ausdruck. !(a == b)

Allgemeine Programmkonstrukte

Variablen

Lokale Hilfsvariablen

Objektvariablen

Parametervariablen

Rückgabevariablen

Methoden

Programmkonstrukte zur Ablaufsteuerung

Bedingte Anweisungen

Beschreibung Syntax Beispiel
if-Anweisung

(Bedingte Anweisung)

Java-Syntax-If.png
if( i > 5 ) {
	System.out.println('i ist grösser als 5');
}
if-else-Anweisung

(Alternative)

Java-Syntax-Ifelse.png
if( i > 5 ) {
	System.out.println('i ist grösser als 5');
} else {
	System.out.println('i ist kleiner oder gleich 5');
}
if-elseif-Anweisung Java-Syntax-Ifelseif.png
if( i > 5 ) {
	System.out.println('i ist grösser als 5');
} elseif( i < 3 ) {
	System.out.println('i ist kleiner als 3');
} else {
	System.out.println('i ist 3, 4 oder 5');
}
switch-Anweisung

Kurzschreibweise für viele if-elseif-Anweisungen hintereinander. Die switch-Anweisung funktioniert nur mit primitiven Datentypen. (Also z.B. mit char, aber nicht mit String.)

Datei:Java-Syntax-Switch.png
int i;
switch( i ) {
	case 1:
	    System.out.println("1 wurde erkannt!");
    	break;
	case 2:
	    System.out.println("2 wurde erkannt!");
    	break;
    default:
	    System.out.println("Keine 1 oder 2!");
    	break;
}

Schleifen

Beschreibung Syntax Beispiel
while-Schleife

(Kopfgesteuerte Schleife, Bedingte Schleife)

Datei:Java-Syntax-While.png
int i = 0;
while( i < 10 ) {
	System.out.println("i ist jetzt " + i);
	i += 1;
}
do-while-Schleife

(Fußgesteuerte Schleife)

Datei:Java-Syntax-Dowhile.png
boolean isRunning = true;
int i = 0;
do {
	System.out.println("i ist jetzt " + i);
    isRunning = 1 < 10;
} while( isRunning );
for-Schleife

(Zählschleife)

Datei:Java-Syntax-For.png
for( int i = 0; i < 100; i++ ) {
	System.out.println("i ist jetzt " + i);
}

Fehlerbehandlung

Beschreibung Syntax Beispiel
try-catch-Anweisung Datei:Java-Syntax-Trycatch.png
try {
	// Anweisungen die ggf. einen Fehler (Exception) produzieren
	// Sobald ein Fehler produziert wurde, wird in den catch-Teil gesprungen
} catch( Exception e1 ) {
	System.err.println("Ein Fehler ist aufgetreten!");
}
try-catch-finally-Anweisung Datei:Java-Syntax-Trycatch.png
try {
	// Anweisungen die ggf. einen Fehler (Exception) produzieren
	// Sobald ein Fehler produziert wurde, wird in den catch-Teil gesprungen
} catch( Exception e1 ) {
	System.err.println("Ein Fehler ist aufgetreten!");
} finally {
	System.err.println("Diese Anweisung wird auf jeden Fall ausgeführt.");
}

Statt Exception können auch konkrete Fehler abgefangen werden. Dien Liste der Standard-Exceptions findet sich unter java.lang.Exception. (Es können aber auch eigene Exceptions erstellt werden.) Es ist auch erlaubt mehrere catch-Blöcke anzugeben:

try {
	// Anweisungen die ggf. mehrere Fehler (Exceptions) produzieren
	// z.B. InputMismatchException oder NoSuchElementException
    // in Scanner#nextInt().
} catch( InputMismatchException e1 ) {
	System.err.println("Eingabe kann nicht in Zahl umgewandelt werden!");
} catch( NoSuchElementException e2 ) {
	System.err.println("Keine weitere Eingabe vorhanden!");
}

Klassen aus der Java-API

Ausgaben

Beschreibung Beispiel
Ausgabe von Text in der Konsole
System.out.print("Hallo, Welt!");
Ausgabe von Text mit Zeilenumbruch in der Konsole
System.out.println("Hallo, Welt!");
Ausgabe von Text mit Formatierungen in der Konsole
System.out.printf("%s, %s!\n", "Hallo", "Welt");
Ausgabe von Text in der Fehlerkonsole
System.err.println("Hallo, Welt!");

java.lang.Math

Sammlung von mathematischen Hilfsfunktionen (Runden, Wurzel, Logarithmus, ...). Ein vollständige Übersicht findet ihr in der Java API Dokumentation.

Beschreibung Signatur Beispiel
Rundet die Zahl zahl. long Math.round(double zahl)
long gerundet = Math.round(14.235); // 14
Zufallszahlen zwischen 0 und 1 erzeugen. (1 wird nie erzeugt.) long Math.random()
double zufall = Math.random();
Quadratwurzel berechnen. double Math.sqrt(double radikant)
double wurzel = Math.sqrt(2); // 1.41

java.util.Random

Hilfsklasse, um Zufallswerte verschiedener Typen zu erzeugen.

Icon Info.png
Die Klasse muss zuerst importiert werden. Schreibe in Zeile 1:

import java.util.Random;

Beschreibung Signatur Beispiel
Zufällige ganze Zahl von 0 bis max-1 erzeugen. int nextInt(int max)
Random rand = new Random();
// Zufallszahl von 0 bis 99
int zufall = rand.nextInt(100);
// Zufallszahl von 50 bis 69
int zufall2 = rand.nextInt(20)+50;
Zufälligen Wahrheitswert erzeugen. boolean nextBoolean()
Random rand = new Random();
boolean zufall = rand.nextBoolean();
Zufällige Zahl zwischen 0 und 1 erzeugen, wobei 1 niemals erzeugt wird (exklusive). double nextDouble()
Random rand = new Random();
double zufall = rand.nextDouble();

java.util.Scanner

Die Klasse Scanner ist eine Hifsklasse, die das Einlesen von Benutzereingaben in der Konsole erleichtert. Zunächst muss ein Objekt der Klasse mit dem Parameter System.in erstellt werden: Scanner konsole = new Scanner(System.in);.

Icon Info.png
Die Klasse muss zuerst importiert werden. Schreibe in Zeile 1:

import java.util.Scanner;

Beschreibung Signatur Beispiel
Einlesen einer ganzen Zahl. Ist die Eingabe keine Zahl, wird eine java.util.InputMismatchException produziert. (Siehe Fehlerbehandlung zum Umgang mit Exceptions.) int nextInt()
Scanner konsole = new Scanner(System.in);
int eingabe = konsole.nextInt();
Einlesen einer Textzeile. Die Eingabe muss mit ENTER abgeschlossen werden. String nextLine()
Scanner konsole = new Scanner(System.in);
String eingabe = konsole.nextLine();

Datentyp-Klassen

java.lang.String

Beschreibung Signatur Beispiel
Anzahl Zeichen in der Zeichenkette. int length()
String text = "Hallo, Welt!";
int zeichen = text.length(); // 12
Gibt das Zeichen an Index i zurück. Das erste Zeichen hat den Index 0. char charAt( int i )
char firstChar = "Hallo, Welt!".charAt(0); // 'H'
char fourthChar = "Hallo, Welt!".charAt(3); // 'l'
Wandelt alle Zeichen in Großbuchstaben um. String toUpperCase()
String text = "Hallo, Welt!";
String upper = text.toUpperCase(); // HALLO, WELT!
Wandelt alle Zeichen in Kleinbuchstaben um. String toLowerCase()
String text = "Hallo, Welt!";
String upper = text.toLowerCase(); // hallo, welt!
Findet die Position im String, an der der Text suchen zum ersten Mal vorkommt. Kommt der Text gar nicht vor, dann wird -1 zurück gegeben. Das erste Zeichen hat den Index 0. int indexOf( String suchen )
String text = "Hallo, Welt!";
int position = text.indexOf(","); // 5
text.indexOf("Foo"); // -1
Ersetzt das erste vorkommen von suche mit ersatz. String replaceFirst(String suche, String ersatz)
String text = "Hallo, Welt!";
text.replaceFirst("Welt", "Wald"); // Hallo, Wald!

java.lang.Integer

Beschreibung Signatur Beispiel
Konvertiert einen String in eine Zahl. int Integer.parseInt(String text)
String text = "5";
int zahl = Integer.parseInt(text);
Konvertiert eine Zahl in einen String. String Integer.toString(int zahl)
int zahl = 5;
String alsText = Integer.toString(zahl);

Zu allen primitiven Datentypen gibt es eigene Datentyp-Klassen (sog. Wrapper-Klassen):