home..

Java Dokumentation

if - else Verzweigung

Dient dazu bestimmte Programmteile nur beim Eintreten vorgegebener Bedingungen auszuführen.

Syntax:

if (bedingung) {
    anweisung();
    ...
} else {
    anweisung();
    ...
}

if wertet zuerst die Bedingung aus, ist sie wahr (true) werden die Anweisungen in if - Block ausgeführt, ist die Bedingung falsch (false) werden die Anweisungen im else - Block ausgeführt.

! Achtung !

Else ist Optional daher muss man keinen else - Block angeben.

Beispiele:

if (myRob.IstWand()){
    myRob.LinksDrehen();
} else {
    myRob.Schritt();
}
if (myRob.IstWand()){
    myRob.LinksDrehen();
}

for Schleife

Syntax:

for (int; bedingung; update){
    anweisung();
    ...
    ..
    .
}

Jeder der 3 Ausdrücke int, bedingung und update kann entfallen.

Beispiel:

for(;;){
    myRob.Schritt();
}

Diese Schleife wird endlos ausgeführt !

Bedeutung:

int = Wird 1x vor Beginn der Scheife ausgeführt. Wird meist zum erzeugen einer Variablen verwendet.
bedingung = Die Scheife wird solange ausgeführt wie die Bedingung “true” ist. Gibt man keine Bedingung an, ist sie automatisch “true”.
update = Wird nach jedem Schleifendurchlauf ausgeführt, so kann eine Variable erhöt oder verringert werden.

Beispiele:

for (int counter = 0; counter < 5; counter++){
    myRob.Schritt();
} // Roboter Läuft 5 Schritte

do - while Schleife

Syntax:

do {
    anweisung();
    ...
    ..
    .
} while(bedingung);

Die Do - while Schleife arbeitet nicht abweisend, daher wird sie mindestens 1 mal ausgeführt.

Die Schleife wird nicht erneut ausgeführt, wenn die Bedingung false ist.

While Schleife

Dient zum wiederholen von Programmabschnitten

Syntax:

while(bedingung){
    anweisung();
    ...
    ..
    .
}

Ablauf:

Bedingung wird geprüft ist sie true werden die Anweisungen ausgeführt und die Bedingung wird erneut geprüft. Ist sie false wird der Schleifenblock übersprungen.

Beispiele:

class {
    int counter = 0;
    while (counter < 9){
        counter = counter +1;
    }
}

Vergleiche

bedingungen werde auf Gleichheit getestet die Bedingungen egeben einen boolschen Wert.

Operatoren Bedeutung Beispiel
== gleich x == 3
!= nicht gleich x != 3
> größer als x > 3
< kleiner gleich x < 3
<= kleiner gleich x <= 3
>= größer gleich x >= 3

Beispiel:

Stein ablegen, wenn keiner da liegt.

if (robi.IstZiegel() == false){
    robi.Hinlegen();
}
if (robi.IstZiegel() != true){
    robi.Hinlegen();
}

Zugriff auf die eigene Klasse (this)

Wenn übergabeparameter den selben namen haben, wie die Variablen der Klasse, kann man per this angeben, dass man Zugriff auf die Variable der Klasse zugreifen möchte.

Beispiel:

class A{
    int A;
    A(int A){
        this.A=A;
    }
}

Methoden

z.B.

myRob.Schritt();

Syntax:

Modifier Datentyp Name (Parameterliste){
    Anweisung();
}

Modifier und Parameterliste sind Optional und können entfallen.

Beispiel:

void fuenfSchritte(){
    for (int i=0; i<5; i++){
        myRob.Schritt();
    }
}

Wenn die Methode keinen Datentyp mehr liefert ist der Datentyp void.

Der Methoden aufruf erfolgt über:

class rob{
    void fuenfSchritte(){
        for (int i=0; i<5; i++){
            myRob.Schritt();
        }
    }
    public static void main (String []args){
        rob robi = new rob();
        robi.fuenfSchritte();
    }
}

Konstruktor

Beispiel:

class Auto3{
    String Marke;
    int baujahr;
    int leistung;

    Auto3(String m, int bj, int L){
        Marke = m;
        baujahr = bj;
        Leistung = L;
    }
}
class AutoVerwaltung3{
    public static void main (String []args){
        Auto3 a = new Auto3("Audi", 2008, 605);
        Auto3 b = new Auto3("BMW", 2017, 550);
    }
}

Somit wird aus Auto Auto2

class Auto {
    int Baujahr = 0;
    String Farbe;
    String Hersteller;
    String Typ;
}

 

 

 

Wie kann man diesen Variablen Werte geben ?

class AutoVerwaltung{
    public static void main (String []args){
        Auto a = new Auto();
        Auto b = new Auto();
    }
}

Frage ? Welchen Hersteller hat das Auto A ?

a.Hersteller = "Audi";
a.Baujahr = 2008;
b.Hersteller = "BMW";
b.Baujahr = 2017;
a.Farbe = "schwarz";
a.typ = "RS6";
b.Farbe = "Weis";
b.typ = "M6";

Gibt es alternativen um den Variablen Werte zu geben ?

class Auto2{
    int bj;
    String farbe;
    String hersteller;
    String Typ;
 void initialisieren (int baujahr, String f, String h, String t){
     bj = baujahr;
     hersteller = h;
     Typ = T;
   }
}
class AutoVerwaltung2{
    public static void main (String []args){
        Auto2 a = new Auto2();
        a.initialisieren(2008,"Schwarz","Audi","RS6");
        Auto2 b = new A
    }
}

Arrays

3 Schritte zum Erstellen eines Arrays

1.) Deklarieren einer Variablen zur Aufnahme des Arrays.

int Werte [];

2.) Erstellen eines neuen Array-Objekts und der Array-Variablen zuweisen.

Werte = new Werte[10];

3.) Speichern von Werten in den Array-Elementen

Werte[0] = 789;
Werte[1] = 123;
Werte[2] = 456;
Werte[9] = 999;

Beispiel:

Flasche fArr[] = new Flasche[12];
  for(int i=0; i<12; i++){
      if (i==0){
          fArr[i] = new Flasche(0);
      } else {
          fArr[i] = new Flasche ((int) (Math.random()*1000+1));
      }
  }

Eingabe / Ausgabe (IO) in Java

Ein / Ausgabe findet über Dateien oder Geräte statt.

Folgende abstrakte Klassen sin die Basisklassen aller Streamklassen.

In jedem Programm sind folgende Byte-Stream Objekte in der Klasse System vordefiniert:

public static final InputStream in; // Standard Eingabe Objekt
public static final PrintStream out; // Standard Ausgage Objekt
public static final PrintStream err; // Standard Fehlerausgabe Objekt

Lesen von der Standard-Eingabe

Stream-Objekt: System.in 1) Methode zum Einlesen ist read() 1) Liest einzelne Bytes oder ein Feld von Bytes.

Im Programm arbeitet man mit Unicode, deshalb wäre ein Unicode Render Objekt besser zum Einlesen. Dies liefert die Input-Stream-Reader Klasse.

Mit read() können nur einzelne Zeichen gelesen werden, schöner wäre es, wenn man eine ganze Zeile einlesen könnte. Dies bietet die Klasse BufferedReader mit der Methode readLine()

Außerdem müssen IOExceptions behandelt werden.

Beispiel:

import java.io.*;
class EchoLine(){
    public static void main(String[] args){
        BufferedReader br = null;
        try{
            br = new BufferedReader(
                new InputStreamReader(System.in));
            String Line;
            while((Line == br.readLine()) != null){
                System.out.println(Line);
            }
        } catch (IOException ex) {
            System.out.println(ex.getMessage());
        }
    }
}

Daten in Java speichern

Zum Speichern von Texten benutzt man writer Klassen. Diese bieten die Methoden:

public void close() // Zum Schließen
public void flush() // Explizites Schreiben
public void write(String str) // Zum Speichern 

Der Konstruktor öffnet einen Ausgabestrom der mit “write” beschrieben und mit “close” geschlossen werden kann. Zum schreiben in eine Datei nutzt man die Klasse FileWriter. Bsp:

import java.io.*;
class Schreiben(){
    public static void main(String[] args){
        String hello = "Hallo Java \n \r";
        FileWriter f = null;
        try{
            f = new FileWriter("Hallo.txt");
            f.Write(hello);
        } catch (Exception ex){
            System.out.println(ex.getMessage());
        } finally {
            if(f != null){
                try {
                    f.close();
                } catch (IOException ex){
                    System.out.println(ex.getMessage());
                } 
            }
        }
    }
}

Exception - Ausnahmen Behandlung

Syntax:

try{
    anweisung();
} catch (Exception ex){ // Exception = Ausnahmetyp
    anweisung
}

Tritt im try-Block ein Fehler auf, wird das Programm unterbrochen und in die erste Passende catch-Klausel mit dem richtigen Ausnahmetyp. Dort kann auf den Fehler reagiert werden.

Der finally-Block wird immer beim verlassen des try-Blocks ausgeführt.

Bsp:

try{
    integer.parseint(Str);
} catch (Exception e){
    System.out.println("Error");
} finally {
    System.out.println("Ende");
}

Konstanten - Final

Bsp:

public static final double pi = Math.PI;

Datenkapselung / Sichtbarkeit Zugriffsbeschränkung

Static

static Variablen und Methoden existieren vom Laden der Klasse bis zum Beenden des Programms. Sie können ohne ein Objekt der Klasse aufgerufen werden.

Beispiel.)

class A{
    int x = 7;
    static int z = 1;
    public static void main (String[] args){
        A a = new A();
        a.x = 3; // X ist einmal für Objekt A und a2 Vorhanden

        A a2 = new A();
        a2.x = 10; // X ist einmal für Objekt A und a2 Vorhanden

        a.z = 2; // Z ist einmal vorhanden und hat für Objekt a und a2 den selben Wert.
        a2.z = 3;

        A.z = 4;
    }
}

Vererbung

Um eine neue Klasse aus einer bestehenden abzuleiten, ist im Kopf der Klasse mit Hilfe des Schlüsselwortes extends ein Verweis auf die Basisklasse anzugeben. Hier durch erbt die agbeleitete Klasse alle Eigenschaften der Basisklasse. D.h. alle Variablen und alle Methoden (außer wenn diese privat sind). Durch Hinzufügen neuer Elemente oder überladen der vorhandenen kann die Funktionalität der abgeleiteten Klasse erweitert werden.

Bsp:

// Basisklasse / Elternklasse
class a {
    void drucken(){
        . . .
    }
    int x = 7;
    private int y = 9;
}
// Erbt alle Eigenschaften von Klasse A => Kindsklasse
class b extends a{
    // Überschreibt die Methode der Elternklasse
    void drucken(){
        // Aufrufe der Methode aus der Elternklasse
        super.drucken();

        System.out.println("Klasse B");
    }
    int z = 2;
    void rechnen(){
        z = 3 * x; // Verwenden von X aus der Elternklasse
    }
}
class Test{
    public static void main(String[] args){
        A a1 = new B();
        A a2 = new A();
        B b1 = new B();

        a1.drucken(); // Drucken aus Klasse B
        a2.drucken(); // Drucken aus Klasse A
        b1.drucken(); // Drucken aus Klasse B

        a1.x = 9; // X aus Klasse A
        a2.x = 9; // X aus Klasse A
        b1.x = 9 // X aus Klasse A
        b1.z = 7; // Z aus Klasse B

        ((B).a1).z = 7; // Variable a1 die vom Typ A ist wird auf B gecastet
        ((B).a1).rechnen(); // Methode a1 die vom Typ A ist wird auf B gecastet
    }
}

Zugriff auf eine MySQL Datenbank

Aller erstens muss man sich den aktuellsten JDBC-Treiber für die Datenbank besorgen.

Der Treiber wird als Bibliotheke in NetBeans eingebunden.

Folgende Schritte sind nun nötig:

  1. import java.sql.*;
  2. Objekt des JDBC Treibers erzeugen
     class.forName("com.mysql.jc.jdbc.Driver").newinstance();
    

    Diese Anweisung muss in einen try / catch Block.

  3. Neuer try / catch Block für die folgenden Anweisungen
    • Verbindung zum Server:
       Connection conn = DriverManager.getConnection("jdbc.mysql://127.0.0.1/db", "user", "password");
      
  4. SQL Abfragen erstellen
    Statement stmt = conn.createStatement();
    
  5. SQL-Select Abfrage und Antword speichern
    ResultSet rs = stmt.executeQuery("SELECT * FROM table");
    
  6. Ergebnisdatensätze ausgeben
    while(rs.next()){
        System.out.println(rs.getInt("id")+"\+"+rs.getString("name"));
    }
    
  7. Alles wieder schließen im finally Block
    ... } finally {
        rs.close();
        stmt.close();
        conn.close();
    }
    

    Achtung: Jede close() Methode benötigt einen eigenen try / catch Block.

© 2023 Markus Brunsch