Java Kurs

Aus ProgrammingWiki
Archivierte Version vom 2008-10-07T09:32:16+00:00. Aktuelle Version

Java ist eine objektorientierte Programmiersprache. Selbst für einfachste Programme ist deshalb ein gewisses Grundgerüst in Form einer Klasse nötig. Um zunächst einfache Grundstrukturen von Java zu verstehen, wollen wir auf dieses Grundgerüst zunächst verzichten und nur einfache Java Methoden entwickeln.

Datentypen

Java unterscheidet zwischen primitiven Datentypen (einfachen) und Objekten. Wir wollen uns zunächst den einfachen Typen zuwenden. Dazu zählen die folgenden:

TypByteWertebereichStandardwert
Boolische Datentypen
boolean1true,falsefalse
Integer
byte1- 207 bis 207-10
short2- 215 bis 215-10
int4- 231 bis 231-10
long8- 263 bis 263-10
Fließkommazahlen
float4- 3.40282347 *1038 bis 3.40282347 *10380.0
double8- 1.79769313486231570 *10308 bis 1.79769313486231570 *103080.0
Zeichen
char2alle Unicode - Zeichen\n0000

Zu beachten ist, dass reelle Zahlen mit Punkt also 12.5 (nicht 12,5) notiert werden.

Um uns etwas mit dieser Schreibweise vertraut zu machen, wenden wir einfache Rechenoperatoren auf ganze und reelle Zahlen an. Gib in das obere Kästchen eine Gleichung ein. Anschließend kannst du mit Eval diese vom Java-Interpreter ausführen lassen.

<eval rows="1">3*5-12.5</eval>

Ein weiteren Datentyp ist String, welcher Zeichenketten repräsentiert. Eine Zeichenkette wird in " eingeschlossen. String ist kein primitivenr Typ. Wir wollen ihn dennoch schon jetzt verwenden ohne dessen genauen Definition zu kennen. Auch auf Zeichenketten kann der Operator "+" angewendet werden. Im Gegensatz zu arithmetischen Ausdrücken steht Plus hier für die Verkettung.

<eval rows="1">"Hallo" + " " + "Welt"</eval>

Zeichenketten können auch mit anderen Datentypen verkettet werden:

<eval rows="1">"Pi ist " + 3.14</eval>

Beachte, dass es sich bei 3.14 um eine Fließkommazahl handelt. Diese wird durch "+" automatisch in eine Zeichenkette "3.14" konvertiert und anschließend mit "Pi ist " verkettet. Was passiert wenn man etwa folgenden Ausdruck schreib: "2 mal Pi ist " + 3.14*2 ?

Methoden aufrufen und definieren

Um eine Methode aufzurufen verwenden wir den Methodennamen gefolgt von runden Klammern. Dies entspricht der Funktionsvorstellungen aus der Mathematik f(x). In diesem Fall ist x der Parameter zu dem uns die Funktion f einen Funktionswert berechnen soll.

Nehmen wir die Sinus Funktion sin(x). Wir wissen, dass für x eine Fließkommazahl angegeben wird (etwa Pi) und eine Fließkommazahl zurückgeliefert wird. Java bietet uns bereits eine fertige Methode sin(x) an, die wir verwenden können. Alle mathematischen Funktionen sind dabei in der Klasse Math definiert. Was genau eine Klasse ist, werden wir uns erst später genauer anschauen.

<eval rows="1">Math.sin(1)</eval>

Hier haben wir die Methode sin(x) der Klasse Math verwendet. Experimentiere mit mit weiteren Funktionen wie cos(x),tan(x),sqrt(x).

Wir wollen uns eine Funktion für Pi definieren. Es handelt sich dabei um eine null-stellige Funktion, da unabhängig vom Parameter stets 3.14 als Funktionswert zurückgegeben wird. Das ist auch klar, denn Pi ist ja bekanntlich eine Konstante - also eine konstante Funktion.

Um eine Methode zu definieren müssen wir zunächst den Rückgabetyp festlegen. Für unsere Methode gibPi() wählen wir den primitiven Datentyp double aus. Es handelt sich dabei um eine reelle Zahl. Gefolgt wird dieser Rückgabetyp von einem Methodennamen. Diesen können wir beliebig wählen, sollten aber gewisse Regeln beachten. Ein Name darf zum Beispiel nicht mit einer Zahl beginnen.

Schau dir den nachfolgen Quelltext genau an und versuche dessen Bedeutung zu erahnen:

Eine solche Methode können wir nun genau wie f(x) aufrufen. Nachfolgendes Beispiel zeigt einen solchen Aufruf:

<eval rows="1">"Pi ist: " + gibPi() + " der Sinus von Pi ist: " + Math.sin(gibPi())</eval>

Schlag im Internet nocheinmal den genauen Wert von Pi nach und ändere die Methode gibPi() entsprechend ab. Der Sinus von Pi sollte schließlich 0 ergeben. Du wirst feststellen, dass wir zwar einen Wert sehr nah an 0 erhalten (beachte die Exponentialschreibweise wie E-9 am Ende der Zahl), jedoch auf Grund der Genauigkeit von double nur eine Näherung bekommen. Runden wir also unser Ergebnis:

<eval rows="1">Math.round(Math.sin(gibPi()))</eval>

Gehen wir nun einen Schritt weiter und definieren eine Methode mit Parameter. Parameter werden in den runden Klammern als kommaseparierte Liste angegben. Dabei wird wieder zunächst der Datentyp angegeben und von einem Variabelnamen gefolgt. Der Name kann wieder frei gewählt werden - jedoch ist es sinnvoll möglichst nachvollziehbare Namen zu vergeben.

Gegeben sei eine Methode zur Berechnung der Kreisfläche:

<eval rows="1">"Die Fläche eines Kreises mit r=3cm beträgt: " + KreisA(3) + "cm²"</eval>