Datenbankanwendungsprogrammierung Crashkurs Java Denny Priebe Datenbankanwendungsprogrammierung p.
Unterschiede zu C, C++ typedefs, Präprozessor Strukturen, Unions globale Funktionen Mehrfachvererbung goto implizites Type-Casting Zeiger, manuelle Speicherverwaltung Datenbankanwendungsprogrammierung p.
Applikationen gestartet wird Methode main public class Hello { public static void main(string args[]) { System.out.println("Hello"); } } Datenbankanwendungsprogrammierung p.
Quelltexte Dateien tragen Namen der public-klasse mit Extension.java nur eine öffentliche Klasse pro Datei erlaubt Übersetzung und Ausführung: $ javac Hello.java $ java Hello Datenbankanwendungsprogrammierung p.
Blöcke fassen Anweisung zu einem Verbund zusammen eingeschlossen durch { und } Deklarationen innerhalb von Blöcken möglich, Gültigkeitsbereich, Sichtbarkeit Datenbankanwendungsprogrammierung p.
Einfache Datentypen logischer Typ boolean Ganzzahltypen int, byte, short und long Fließkommatypen float und double Zeichentyp char Datenbankanwendungsprogrammierung p.
boolean einzigen Werte: true, false keine Casts auf/von andere(n) Typen möglich Operationen: ==,!=, &,, ˆ, &&, Datenbankanwendungsprogrammierung p.
Ganzzahltypen vorzeichenbehaftet byte: 8 Bit, short: 16 Bit, int: 32 Bit, long 64 Bit Operationen (u.a.): ==,!=, <, <=, >, >=, +, -, *, /, %, ++, - Zuweisungen: +=, -=, *=, /=,... Datenbankanwendungsprogrammierung p.
Fließkommatypen float: 32 Bit, double 64 Bit Operationen, Zuweisungen ähnlich oben Literale per default double, sonst Suffix f Datenbankanwendungsprogrammierung p.
char speichert einzelne Unicode-Zeichen Zuweisungskompatibel mit int-werten (Nummer des Zeichens) Literale in einfache Hochkommata char c = A ; char d = 65; Datenbankanwendungsprogrammierung p. 1
Wrapper-Klassen Wrapper-Klasse für jeden einfachen Datentyp Boolean, Byte, Short, Integer, Long, Double, Float, Character Aufgabe: formale Parametern von Standard-Methoden, Konvertierungsmethoden Datenbankanwendungsprogrammierung p. 1
Strings kein einfacher Datentyp, sondern Objekte von Klassen String für konstante Zeichenketten, StringBuffer für veränderliche Zeichenketten String s = "Ein Test-String"; String s2 = "Ein Test" + "-String"; Datenbankanwendungsprogrammierung p. 1
Arrays (1) haben Objekt-Eigenschaften, aber keine Konstruktoren; sind auch nicht spezialisierbar Deklaration: int[] demo; // oder auch int demo[]; // geschachtelt: int[][] coord; Datenbankanwendungsprogrammierung p. 1
Arrays (2) Initialisierung: int[] a1 = {1,2,4,9,16}; int[][] coord = {{0,0}, {0,1}, {1,0}, {1,1 int[][] a2 = {{1}, {2,3}}; // oder mit new: int[] a3; a3 = new int[5]; Datenbankanwendungsprogrammierung p. 1
Arrays (3) Zugriff: a1[0] = 0; a2[1][1] = 4; Kopien (Referenzen!) über Objekt.clone() oder System.arraycopy() Datenbankanwendungsprogrammierung p. 1
Variablen, Konstanten Variablendeklaration: <Typname> <Variablenname> Initialisierung möglich Konstanten: zusätzlich final int i; float j, k = 1.2f; final String Titel = "ORDB"; Datenbankanwendungsprogrammierung p. 1
Objekte vs. Werte Werte: Instanzen einfacher Datentypen Objektvariablen sind Referenzen; flaches Kopieren mittels clone() Paramterübergabe grundsätzlich by value Datenbankanwendungsprogrammierung p. 1
Anweisungen if, switch, while, do, for break, continue return Datenbankanwendungsprogrammierung p. 1
if Einschränkung bzgl. C, C++: Bedingung ist boolescher Ausdruck if (a < b) System.out.println(...); else System.out.println(...); Datenbankanwendungsprogrammierung p. 1
switch Ausführung von Anweisungen in Abhängigkeit eines Selektors Selektor: int oder zuweisungskompatibel switch (x) { case 0: System.out.println(...); break; case 1:... default: System.out.println(...); Datenbankanwendungsprogrammierung p. 2
while kopfgesteuerte Wiederholung while (a!= 5) a++; Datenbankanwendungsprogrammierung p. 2
do fußgesteuerte Wiederholung do { a++; } while (a!= 5); Datenbankanwendungsprogrammierung p. 2
for Wiederholung für bestimmte Anzahl von Durchgängen Zählvariable mit Initialwert, Bedingung, Inkrementierungsanweisung Initialisierung, Inkrementierung: mehrere Anweisungen durch Komma getrennt möglich for (int i = 0; i < 10; i++) System.out.println(i); Datenbankanwendungsprogrammierung p. 2
break, continue break verläßt aktuelle Kontrollstruktur continue setzt mit nächstem Schleifendurchlauf fort for (;;a++) { if (a > 10) break; } Datenbankanwendungsprogrammierung p. 2
Kommentare mehrzeilig: /* und */, nicht schachtelbar einzeilig: //, schachtelbar Datenbankanwendungsprogrammierung p. 2
Klassendefinition Attribute, Methoden + Zugriffsregeln public class Point { public int x,y.color; public void moveto(int x, int y) { this.x = x; this.y = y; } } Datenbankanwendungsprogrammierung p. 2
Instantiierung von Klassen Variablen nehmen Referenz auf Objekt auf bei Deklaration null Erzeugung durch new-operator Point p; // Wert null p = new Point(); p.moveto(1,2); Datenbankanwendungsprogrammierung p. 2
Konstruktoren (1) implizit erzeugter parameterloser Standard-Konstruktor tragen Namen der Klasse, Überladen möglich Datenbankanwendungsprogrammierung p. 2
Konstruktoren (2) public class Point {... public Point(int x, int y) { this.x = x; this.y = y; color = 0; } public Point(int x, int y, int color) { this(x,y); this.color = color; } } Datenbankanwendungsprogrammierung p. 2
Destruktoren kein delete-operator, keine Destruktoren im C++-Sinn automatische Freispeicherverwaltung (Garbage Collection) finalizer-methoden (protected void finalize()) Eigenschaften: Aufruf nicht garantiert, Exceptions ignoriert, keine Angaben über Zeitpunkt oder Reihenfolge des Aufrufs Datenbankanwendungsprogrammierung p. 3
Einfachvererbung public class Square extends Point { public int length; public Square(int x, int y, int color, int super(x, y, color); this.length = length; } public void resize(int length) { this.length = length; } } Datenbankanwendungsprogrammierung p. 3
Overriding von Methoden public class RoundSquare extends Square { public int radius; public RoundSquare(int x, int y, int color, super(x, y, color, length); this.radius = radius; } public void resize(int length) { radius = length/this.length; super.rezize(length); } } Datenbankanwendungsprogrammierung p. 3
Zugriffsklassen: Daten, Methoden public Zugriff von beliebigen Klassen protected Zugriff aus jeder Klasse desselben Paketes oder aus Unterklassen anderer Pakete private Zugriff nur von Objekten der gleichen Klasse; keine Vererbung ohne Angabe Zugriff von allen Klassen desselben Pakets Datenbankanwendungsprogrammierung p. 3
Zugriffsklassen: Klassen public Verwendung überall erlaubt ohne Angabe Verwendung nur im eigenen Paket Datenbankanwendungsprogrammierung p. 3
Modifier für Daten/Methoden final Definition von Konstanten, Methode nicht überschreibbar; Methoden einer final-klasse sind implizit final static Klassenvariablen, Klassenmethoden (static-methoden sind implizit final) abstract Methoden ohne Implementierung; nur in abstrakten Klassen Datenbankanwendungsprogrammierung p. 3
Parameterübergabe grundsätzlich call by value d.h. auch Objektreferenzen Modifier final möglich Datenbankanwendungsprogrammierung p. 3
Interfaces reine Schnittstellen ohne Implementierung Interfaces können spezialisiert werden, auch Mehrfachvererbung Klasse kann mehrere Interfaces implementieren, erbt aber keine Implementierungen Interface-Variable kann Objekte der implementierenden Klasse(n) aufnehmen Datenbankanwendungsprogrammierung p. 3
Pakete (1) bündeln logisch zusammengehörige Klassen/Interfaces bilden Hierarchie und jeweils einen Namensraum package mein.paket; public class... Datenbankanwendungsprogrammierung p. 3
Pakete (2) Importieren von Paketen erspart vollständige Qualifikation des Paketnamens import java.util.*; nun z.b. Vector statt java.util.vector Datenbankanwendungsprogrammierung p. 3
Exceptions Auslösen und Behandeln von Ausnahmen Exceptions: Objekte von Klassen, geerbt von Throwable werden lokal behandelt oder die Aufrufhierarchie hinauf propagiert Kombination möglich (Exception behandeln, neue auslösen) Datenbankanwendungsprogrammierung p. 4
Lokale Behandlung try { // potentiell Exception-auslsender Code } catch (ExceptionTyp1 e1) { // Behandlung } catch (ExceptionTyp2 e2) { // Behandlung } optionaler finally-block Datenbankanwendungsprogrammierung p. 4
Propagieren von Exceptions Methodendeklaration: throws public void readfile(string name) throws IOEx // Code, der potentiell IOException auslst } Datenbankanwendungsprogrammierung p. 4