Java Programming Refresher

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

Buzzwords

Zeichensatz

Unicode '\uxxxx' 2 Bytes pro Zeichen (andere Programiersprachen ISO-8859-1)

Identifier

Bezeichner einer Variablen, Methode oder Klasse Bildungsregeln: Anfang _ oder Unicodebuchstabe, keine Ziffer; beliebig lang, keine WhiteSpaces, casesensitiv, kein reserviertes Wort + true, false, null

Kommentare

// Zeile, /* mehrzeilig */, /** *javadoczeile *javadoczeile ... */

Datentypen (8 primitive)

byte(1), short(2), int(4), long(8), float(4), double(8), boolean(1), char(2)

Programmblöcke

Minimal 2 Blöcke (Bsp)

Variablen

Jede Variable hat festen Datentyp, Geltungsbereich (Scope): Lokal, Klassen, Instanz

Referenzen

Jede Variable, die keinen primitiven (einfachen) Datentyp hat ist automatisch eine Referenzvariable.

Strings

String (immutable also const), Stringbuffer

Arrays

Datentyp[] Variable; deprecated: Datentyp Variable[]; Initialisierung: Datentyp[] Variable = new Datentyp[len]; oder Datentyp[] Variable = new Datentyp[]{ ,,, }; mehrdimensional: Datentyp[] Variable; oder Datentyp[][]... Variable = new Datentyp[][]...{ { ,,, },{ ,,, },..., }

Casting

Datentyp Variable = (Datentyp) Variable; Keine Konvertierung von Ziffernstrings in numerische Datentypen, aber char in int möglich! Erweiterndes Casting (Todo Grafik) ===Operand/Operator (todo)

Expressions

Konstrukt aus Konstanten, Variablen, Operatoren, Methoden einfacher

Statements

Eine mit dem Semikolon abgeschlossen Expression wird zum Expressionstatement (Ausdrucksstatements); declaration statements and control flow statements

Blocks

Ein Block ist eine Gruppe von Statements (>=0) in geschweiften Klammern und können überall stehen wo ein Statement stehen kann.

Methoden

[perms][ static][ final] type name([ params ])[ throws exList] { Methodenrumpf[ return expr;]} Wen kein return dann type = void; params call-by-value

Klassen

Beschreibt die Eigenschaften und das Verhalten von Objekten class Name {} mit Dateiname Name.class Name identisch und CaseSenitiv; Anfang mit (Groß-)Buchstabe, sonst noch _ und Ziffern erlaubt. Modifier public Deklaration wenn unbegrenzt (Default-Package) nutzbar. Ohne public nur innerhalb desselben Package. Konstruktoraufruf new Classname();(Default-Konstruktor muss implementiert werden, sobald ein Konstruktor mit Argumenten vorhanden ist) Aufruf in den Parameter-Konstruktoren des "Basisblocks" mit this(<Parameter>); als erstes Statement. Spezielle Referenz super(<Parameter>); Aufruf eines Konstruktor der Elternklasse.

Statische Initialisierung

Finale Klassen

Reserviertes Wort final vor class. Keine Vererbung (Ableitung, Kind-Klasse) möglich. Dienen der Geschwindigkeitssteigerung (z.B. Zugriff auf privat-Variablen durch inline-Methode!)

Abstrakte Klassen

Vererbung (Ableitung) wird durch reserviertes Wort abstract erzwungen.

Eine Instanzierung einer abstrakten Klasse ist nicht möglich.

In abstrakten Klassen sind (oft) nur Methoden-Deklarationen, die dann in konkreten Kind-Klassen (concrete classes) implementiert sind.

Ist eine Methode abstract ist automatisch die Klasse auch abstract und muss auch abstract deklariert sein. (Hinweis: Es scheint auch möglich die Klasse nicht abstract zu deklarieren. Wird dann aber in der Kind-Klasse eine abstakte Methode nicht implementiert führt das zu einer Fehlermeldung des Compilers.(untested))

Finale Attribute

Konstanten Final deklarierte Variablen dürfen nur ein einzges Mal initialisiert und nicht dann nicht mehr verändert werden.

Modifier

Sichtbarkeit

Beeinflussen den Scope und die Zugriffsrechte von Attributen und Methoden.

  • Ohne - Package Scope
  • public - globaler Scope (Innerhalb einer java-Datei nur bei einer Klasse möglich)
  • protected -
  • private - nur innerhalb der definierten Klasse
  • transient - keine Serialisierung, vor public, private, protected
  • volatile - keine Optimierung durch den Compiler, vor public, private, protected

Initialisierung

Klasse ungeladen: Ausführung der statischen Initialiserungs-Blöcke Alle passenden Eltern-Kontruktoren. In der Hierarchie von unten nach oben. Alle Member-Variablen (Instanz-Variablen) werden initialisiert. Konstruktor des zu instanzierenden Objekts

this

reserviertes Wort, vordefinierte Referenzvariable auf das aktuelle Objekt, Zugriff auf alle Daten der Instanz

Attribute

Eigenschaften einer Klasse, auch Felder genannt

  • Klassen-Attribute (statische Attribute, static)
  • Instanz-Attribute

Methoden

Verhalten einer Klasse

  • Klassen-Methoden (statische Methoden, static)
  • Instanz-Methoden
  • Accessor-Methoden (Getter): public getName(){return name;} name is private, Kapselung
  • Mutator-Methoden (Setter) public void setName(type value){this.name = value;}
  • toString()-Methode
  • main()-Methode: für Klassen, die ausgeführt werden sollen, public static void, exit() wird von der Klasse system zurückgegeben

Methoden-Signatur

Jede Methode besitzt eine Signatur. Sie setzt sich aus dem Methodennamen und der Parameterliste zusammen.

Konstruktoren

Methode mit dem Namen der eigenen Klasse. Ist public und hat keinen Datentyp. Mit new (reserviertes Wort) Konstruktorname wird eine Objektreferenz auf die Instanz vom Typ der Klasse zurückgeliefert. Die Konstruktormethode ist nicht zwingend, ansonsten muss mindestens der Defaultkonstruktor angelegt sein.

Destruktoren

Gibt es nicht explizit. Jedes Objekt das seine Referenz verliert wird durch den Garbage Collector gelöscht.

OOP-Konzepte

Abstraktion

Eigenschaften und Verhalten sind so verallgemeinert, dass daraus eine Klasse entsteht, die dann auf alle gleichartigen Objekte zutrifft.

Kapselung

Zugriff auf private Attribute nut über Getter- und Setter-Methoden.

Vererbung

Inheritance, Klassenbaum (Eltern-/Kind-Klassen) Durch reserviertes Wort extends Nur Einfachvererbung möglich (Workaround: Interfaces) Base Class, Parent Class (Super), Child Class (Derived)

Polymorphie

Polymorphie oder Polymorphismus (gr.Vielgestaltigkeit) ermöglicht, dass ein Bezeichner abhängig von seiner Verwendung Objekte unterschiedlichen Datentyps annimmt. (???) Eine Variable kann einen Wert(Referenz) einer Klasse1 annehmen, obwohl sie als Variable mit Klasse2 definiert wurde, wenn Klasse1 von der Klasse2 abgeleitet ist. Polymorphie (gr. Vielgestaltigkeit) bezeichnet eine Sprachstruktur, nach der beim Zugriff auf Methoden mit identischer Signatur diese unterschiedliche Ergebnisse liefern. Das Verhalten ist insbesondere im Zusammenhang mit Vererbung anzutreffen.

Overloading

Deklaration mehrerer Methoden mit demselben Namen aber unterschiedlichen Argumenten (damit Signaturen unterschiedlich). Ersatz für variable Funktions-Parameter z.B. in Perl.

Overriding

Deklaration einer Methode mit identischer Signatur (Name+Parameter) aber in unterschiedlichen Klassen des Hierarchie-Baums.

Interfaces

Ersatzkonstrukt für Mehrfachvererbung

  • Ähnlich abstrakten Klassen
  • Keine Konstruktoren und Variablen erlaubt (Konstanten sind erlaubt)
  • alle Attribute und Methoden automatisch (implizit) abstract und public
  • Deklaration mit reserviertem Wort interface