<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://tippvomtibb.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Java_Programming_Refresher</id>
	<title>Java Programming Refresher - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://tippvomtibb.de/wiki/index.php?action=history&amp;feed=atom&amp;title=Java_Programming_Refresher"/>
	<link rel="alternate" type="text/html" href="https://tippvomtibb.de/wiki/index.php?title=Java_Programming_Refresher&amp;action=history"/>
	<updated>2026-05-14T13:24:39Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in TippvomTibb</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>https://tippvomtibb.de/wiki/index.php?title=Java_Programming_Refresher&amp;diff=11&amp;oldid=prev</id>
		<title>Chris T. Ludwig: Die Seite wurde neu angelegt: „==Buzzwords== ===Zeichensatz===  Unicode &#039;\uxxxx&#039; 2 Bytes pro Zeichen (andere Programiersprachen ISO-8859-1) ===Identifier=== Bezeichner einer Variablen, Metho…“</title>
		<link rel="alternate" type="text/html" href="https://tippvomtibb.de/wiki/index.php?title=Java_Programming_Refresher&amp;diff=11&amp;oldid=prev"/>
		<updated>2020-12-21T11:36:33Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „==Buzzwords== ===Zeichensatz===  Unicode &amp;#039;\uxxxx&amp;#039; 2 Bytes pro Zeichen (andere Programiersprachen ISO-8859-1) ===Identifier=== Bezeichner einer Variablen, Metho…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Buzzwords==&lt;br /&gt;
===Zeichensatz=== &lt;br /&gt;
Unicode &amp;#039;\uxxxx&amp;#039; 2 Bytes pro Zeichen (andere Programiersprachen ISO-8859-1)&lt;br /&gt;
===Identifier===&lt;br /&gt;
Bezeichner einer Variablen, Methode oder Klasse&lt;br /&gt;
Bildungsregeln: Anfang _ oder Unicodebuchstabe, keine Ziffer; beliebig lang, keine WhiteSpaces, casesensitiv, kein reserviertes Wort + true, false, null&lt;br /&gt;
===Kommentare===&lt;br /&gt;
// Zeile, /* mehrzeilig */, /** *javadoczeile *javadoczeile ... */&lt;br /&gt;
===Datentypen (8 primitive)===&lt;br /&gt;
byte(1), short(2), int(4), long(8), float(4), double(8), boolean(1), char(2)&lt;br /&gt;
===Programmblöcke===&lt;br /&gt;
Minimal 2 Blöcke (Bsp)&lt;br /&gt;
===Variablen===&lt;br /&gt;
Jede Variable hat &amp;#039;&amp;#039;&amp;#039;festen&amp;#039;&amp;#039;&amp;#039; Datentyp, Geltungsbereich (Scope): Lokal, Klassen, Instanz&lt;br /&gt;
===Referenzen===&lt;br /&gt;
Jede Variable, die keinen primitiven (einfachen) Datentyp hat ist automatisch eine Referenzvariable.&lt;br /&gt;
===Strings===&lt;br /&gt;
String (immutable also const), Stringbuffer&lt;br /&gt;
===Arrays===&lt;br /&gt;
Datentyp[] Variable; deprecated: Datentyp Variable[]; &lt;br /&gt;
Initialisierung: Datentyp[] Variable = new Datentyp[len]; oder Datentyp[] Variable = new Datentyp[]{ ,,, }; mehrdimensional: Datentyp[] Variable; oder Datentyp[][]... Variable = new Datentyp[][]...{ { ,,, },{ ,,, },..., }&lt;br /&gt;
===Casting===&lt;br /&gt;
Datentyp Variable = (Datentyp) Variable; &lt;br /&gt;
Keine Konvertierung von Ziffernstrings in numerische Datentypen, aber char in int möglich!  Erweiterndes Casting (Todo Grafik)&lt;br /&gt;
===Operand/Operator (todo)&lt;br /&gt;
===Expressions===&lt;br /&gt;
Konstrukt aus Konstanten, Variablen, Operatoren, Methoden einfacher &lt;br /&gt;
===Statements===&lt;br /&gt;
Eine mit dem Semikolon abgeschlossen Expression wird zum Expressionstatement (Ausdrucksstatements); declaration statements and control flow statements&lt;br /&gt;
===Blocks===&lt;br /&gt;
Ein Block ist eine Gruppe von Statements (&amp;gt;=0) in geschweiften Klammern und können überall stehen wo ein Statement stehen kann. &lt;br /&gt;
===Methoden===&lt;br /&gt;
[perms][ static][ final] type name([ params ])[ throws exList] { Methodenrumpf[ return expr;]} Wen kein return dann type = void; params call-by-value&lt;br /&gt;
===Klassen===&lt;br /&gt;
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.&lt;br /&gt;
Modifier public Deklaration wenn unbegrenzt (Default-Package) nutzbar. Ohne public nur innerhalb desselben Package.&lt;br /&gt;
Konstruktoraufruf new Classname();(Default-Konstruktor muss implementiert werden, sobald ein Konstruktor mit Argumenten vorhanden ist)&lt;br /&gt;
Aufruf in den Parameter-Konstruktoren des &amp;quot;Basisblocks&amp;quot; mit this(&amp;lt;Parameter&amp;gt;); als erstes Statement.&lt;br /&gt;
Spezielle Referenz super(&amp;lt;Parameter&amp;gt;); Aufruf eines Konstruktor der Elternklasse.&lt;br /&gt;
====Statische Initialisierung====&lt;br /&gt;
====Finale Klassen====&lt;br /&gt;
Reserviertes Wort final vor class.&lt;br /&gt;
Keine Vererbung (Ableitung, Kind-Klasse) möglich.&lt;br /&gt;
Dienen der Geschwindigkeitssteigerung (z.B. Zugriff auf privat-Variablen durch inline-Methode!)&lt;br /&gt;
&lt;br /&gt;
====Abstrakte Klassen====&lt;br /&gt;
Vererbung (Ableitung) wird durch reserviertes Wort abstract erzwungen.&lt;br /&gt;
&lt;br /&gt;
Eine Instanzierung einer abstrakten Klasse ist nicht möglich.&lt;br /&gt;
&lt;br /&gt;
In abstrakten Klassen sind (oft) nur Methoden-Deklarationen, die dann in konkreten Kind-Klassen (concrete classes) implementiert sind.&lt;br /&gt;
&lt;br /&gt;
Ist eine Methode abstract ist automatisch die Klasse auch abstract und muss auch abstract deklariert sein.&lt;br /&gt;
(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))&lt;br /&gt;
&lt;br /&gt;
====Finale Attribute====&lt;br /&gt;
Konstanten&lt;br /&gt;
Final deklarierte Variablen dürfen nur ein einzges Mal initialisiert und nicht dann nicht mehr verändert werden. &lt;br /&gt;
====Modifier====&lt;br /&gt;
Sichtbarkeit&lt;br /&gt;
&lt;br /&gt;
Beeinflussen den Scope und die Zugriffsrechte von Attributen und Methoden.&lt;br /&gt;
* Ohne - Package Scope&lt;br /&gt;
* public - globaler Scope (Innerhalb einer java-Datei nur bei einer Klasse möglich)&lt;br /&gt;
* protected - &lt;br /&gt;
* private - nur innerhalb der definierten Klasse&lt;br /&gt;
* transient - keine Serialisierung, vor public, private, protected&lt;br /&gt;
* volatile - keine Optimierung durch den Compiler, vor public, private, protected&lt;br /&gt;
&lt;br /&gt;
====Initialisierung====&lt;br /&gt;
Klasse ungeladen: Ausführung der statischen Initialiserungs-Blöcke&lt;br /&gt;
Alle passenden Eltern-Kontruktoren. In der Hierarchie von unten nach oben.&lt;br /&gt;
Alle Member-Variablen (Instanz-Variablen) werden initialisiert.&lt;br /&gt;
Konstruktor des zu instanzierenden Objekts&lt;br /&gt;
&lt;br /&gt;
===this===&lt;br /&gt;
reserviertes Wort, vordefinierte Referenzvariable auf das aktuelle Objekt, Zugriff auf alle Daten der Instanz&lt;br /&gt;
===Attribute===&lt;br /&gt;
Eigenschaften einer Klasse, auch Felder genannt&lt;br /&gt;
* Klassen-Attribute (statische Attribute, static)&lt;br /&gt;
* Instanz-Attribute&lt;br /&gt;
&lt;br /&gt;
===Methoden=== &lt;br /&gt;
Verhalten einer Klasse&lt;br /&gt;
* Klassen-Methoden (statische Methoden, static)&lt;br /&gt;
* Instanz-Methoden&lt;br /&gt;
* Accessor-Methoden (Getter): public getName(){return name;} name is private, Kapselung &lt;br /&gt;
* Mutator-Methoden (Setter) public void setName(type value){this.name = value;}&lt;br /&gt;
* toString()-Methode&lt;br /&gt;
* main()-Methode: für Klassen, die ausgeführt werden sollen, public static void, exit() wird von der Klasse system zurückgegeben&lt;br /&gt;
&lt;br /&gt;
===Methoden-Signatur===&lt;br /&gt;
Jede Methode besitzt eine Signatur. Sie setzt sich aus dem Methodennamen und der Parameterliste zusammen.&lt;br /&gt;
&lt;br /&gt;
===Konstruktoren===&lt;br /&gt;
Methode mit dem Namen der eigenen Klasse. Ist public und hat keinen Datentyp.&lt;br /&gt;
Mit new (reserviertes Wort) Konstruktorname wird eine Objektreferenz auf die Instanz vom Typ der Klasse zurückgeliefert.&lt;br /&gt;
Die Konstruktormethode ist nicht zwingend, ansonsten muss mindestens der Defaultkonstruktor angelegt sein.&lt;br /&gt;
===Destruktoren===&lt;br /&gt;
Gibt es nicht explizit. Jedes Objekt das seine Referenz verliert wird durch den Garbage Collector gelöscht.&lt;br /&gt;
===OOP-Konzepte===&lt;br /&gt;
====Abstraktion====&lt;br /&gt;
Eigenschaften und Verhalten sind so verallgemeinert, dass daraus eine Klasse entsteht, die dann auf alle gleichartigen Objekte zutrifft.&lt;br /&gt;
====Kapselung====&lt;br /&gt;
Zugriff auf private Attribute nut über Getter- und Setter-Methoden.&lt;br /&gt;
====Vererbung====&lt;br /&gt;
Inheritance, Klassenbaum (Eltern-/Kind-Klassen)&lt;br /&gt;
Durch reserviertes Wort extends&lt;br /&gt;
Nur Einfachvererbung möglich (Workaround: Interfaces)&lt;br /&gt;
Base Class, Parent Class (Super), Child Class (Derived)&lt;br /&gt;
====Polymorphie====&lt;br /&gt;
Polymorphie oder Polymorphismus (gr.Vielgestaltigkeit) ermöglicht, dass ein Bezeichner abhängig von seiner Verwendung Objekte unterschiedlichen Datentyps annimmt. (???)&lt;br /&gt;
Eine Variable kann einen Wert(Referenz) einer Klasse1 annehmen, obwohl sie als Variable mit Klasse2 definiert wurde, wenn Klasse1 von der Klasse2 abgeleitet ist.  &lt;br /&gt;
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.&lt;br /&gt;
=====Overloading=====&lt;br /&gt;
Deklaration mehrerer Methoden mit demselben Namen aber unterschiedlichen Argumenten (damit Signaturen unterschiedlich).&lt;br /&gt;
Ersatz für variable Funktions-Parameter z.B. in Perl.&lt;br /&gt;
=====Overriding=====&lt;br /&gt;
Deklaration einer Methode mit identischer Signatur (Name+Parameter) aber in unterschiedlichen Klassen des Hierarchie-Baums.&lt;br /&gt;
===Interfaces===&lt;br /&gt;
Ersatzkonstrukt für Mehrfachvererbung&lt;br /&gt;
* Ähnlich abstrakten Klassen&lt;br /&gt;
* Keine Konstruktoren und Variablen erlaubt (Konstanten sind erlaubt)&lt;br /&gt;
* alle Attribute und Methoden automatisch (implizit) abstract und public&lt;br /&gt;
* Deklaration mit reserviertem Wort interface&lt;/div&gt;</summary>
		<author><name>Chris T. Ludwig</name></author>
	</entry>
</feed>