Erste Schritte

Grundlagen

Die folgenden Beispiele setzen Grundkenntnisse der Programmiersprache Java voraus - etwa:

  1. Wozu dient der Java-Compiler javac?
  2. Was bewirkt der Bytecode-Interpreter java?
  3. Wie werden grundlegende Programmstrukturen in Java verwirklicht?
  4. Wie werden Variable und Instanzen deklariert?

Die Beispiele handeln zunächst davon, dass Programme „auf der Kommandozeile“ aufgerufen werden. Ein- und Ausgabe wird also über die Text-Kommandozeile des Terminalfensters abgewickelt. Da Java ursprünglich in erster Linie für grafische Benutzeroberflächen entwickelt wurde, sind die Ein- und Ausgabeprozeduren auf der Kommandozeile reichlich kompliziert…

Übungsziele

Elementare Programme

Minimalprogramm

Im folgenden Beispiel hallo.java ist ein minimales Java-Programm dargestellt. Der Name der Klasse muss mit dem Dateinamen (bis auf die Dateinamenergänzung) übereinstimmen.

public class hallo {
    public static void main (String [] arguments) {
        System.out.println("Informatik ist schön");
    }
}

Das Programm wird mit Hilfe des Java-Compilers javac übersetzt:

javac  hallo.java

Compilation finished at Sun Dec  8 00:30:13

Das compilierte Programm wird entweder über die Entwicklungsumgebung oder auf der Kommandozeile ausgeführt:

java -classpath /usr/lib/java/lib/classes.zip:/home/alfred/java/kurs hallo

Informatik ist schön

Process hallo finished

Kommentare werden (wie in PHP) durch die Zeichenfolge // innerhalb einer Zeile angegeben. Mehrzeilige Kommentare stehen zwischen /* und */.

Primitive Datentypen

Java stellt 8 primitive Datentypen zur Verfügung: byte, short, int, long, float, double, char, boolean.

public class typen {
    public static void main(String [] arguments) {
        int a=1;
        int b=2;
        System.out.println(a + " + " + b + " = " + (a+b));
    }
}

liefert die Ausgabe

1 + 2 = 3

Hier eine Programm mit Verwendung der Klassen out.class und in.class. (Diese beiden Klassen vereinfachen die Ausgabe und die Eingabe ganz wesentlich.)

public class Summe
{
 public static void main(String[] arg)
 {int i,j;
  Out.println("Bitte zwei Zahlen eingeben! ");
  Out.print("Erste Zahl: "); i=In.readInt();
  Out.print("Zweite Zahl: "); j=In.readInt();
  Out.println("Summe = "+(i+j));
 }
 
}



Operatoren

Java verwendet die üblichen Operatoren für die Verknüpfung von Zahlen, Zeichen oder logischen Ausdrücken (vgl. PHP).

Schleifen

Zählschleifen

Solange der Wert der Schleifenvariablen (Laufvariable) kleiner als der angegebene Wert ist, werden die Anweisungen innerhalb der Schleife ausgeführt. Bei jedem Schleifendurchlauf wird der Wert der Schleifenvariable um einen bestimmten Wert erhöht.

public class schleife1 {
    public static void main (String [] arguments) {
        for (int i=1;i<=10;i++) {
            System.out.println(i + " zum Quadrat ergibt: " + (i*i));
        }
    }
}

Kopfgesteuerte Schleife

Solange die Bedingung im Schleifenkopf erfüllt wird, wird die while - Schleife druchlaufen. Ist die Bedingung nie erfüllt, wird die Schleife überhaupt nicht durchlaufen.

public class schleife2 {
    public static void main(String [] args) {
        int i=1;
        while (i<=10) {
            System.out.println(i + "^2 = " + (i*i));
            i++;
        }
    }
}

Im Vergleich dazu wird eine fußgesteuerte do while - Schleife mindestens einmal durchlaufen, weil die Bedingung erst am Ende getestet wird.

Verzweigungen

Die if - Anweisung

Die if - Anweisung lässt eine einfache Bedinung zu. Die unmittelbar nach der Bedinung angegebene Anweisung (oder der in geschwungene Klammern eingeschlossene Anweisungsblock) wird nur dann ausgeführt, wenn die Bedingung erfüllt ist1).

public class verzweigung1 {
    public static void main (String [] arguments) {
        int note = 5;
 
        if (note == 1) System.out.println ("Sehr gut");
        if (note == 5) System.out.println("Schade");
    }
}

Das letzte Beispiel zeigt, wie wichtig Benutzereingaben sind…

Der else - Zweig

Ein else - Zweig wird nur dann ausgeführt, wenn der nach der Bedingung einer if - Anweisung stehende Anweisungblock nicht ausgeführt wurde.

public class verzweigung1 {
    public static void main (String [] arguments) {
        int a = 3;
 
        if (a == 1) System.out.println ("Sehr gut");
        else if (a == 5) System.out.println("Schade");
        else System.out.println("ok");
    }
}

Die Mehrfachverzweigung

Mit Hilfe der switch - Anweisung wird eine Mehrfachverzweigung realisiert:

public class verzweigung2 {
    public static void main (String [] arguments) {
        int note = 31;
 
        switch (note) {
        case 1: System.out.println("Sehr gut"); break;
        case 2: System.out.println("Gut"); break;
        case 3: System.out.println("Befriedigend"); break;
        case 4: System.out.println("Genügend"); break;
        case 5: System.out.println("Nicht genügend"); break;
        default: System.out.println("Keine gültige Note"); break;
        }
    }
}

Methoden

Methoden stellen in Java Unterprogramme dar, wie sie in anderen Programmiersprachen in Form von Funktionen auftreten2).

public class methoden1 {
    public static double quadrat(double i) {
        return i*i;
    }
 
    public static void main(String [] args) {
        for (int i=1; i<=10; i++) {
            System.out.println(i + "^2= " + quadrat(i));
        }
    }
}
1) Beachte, dass alle Bedingungen Boole'sche Werte ergeben müssen!
2) Da in Java ausschließlich Klassen verwendet werden, werden alle auftretenden Funktionen folgerichtig als Methoden bezeichnet.