# Java Fachbegriffe
## Keywords
Keyword = reservierte Wörter die gewisse Funktionalitäten im Code definieren und die die Grundlage der Syntax bilden
(wörter in der Syntax die für einen bestimmten bestandteil/eine Funktion im code stehen?/diesen definieren?)
int integer = 4; -> ganze Zahlen | -2.147.483.648 bis 2.147.483.647
double num1 = 12.21d; -> Kommazahlen, Nachkommastellen: doppelt so lang wie float (double größer als float)
float num2 = 13.51f; -> Gleitkommazahl
boolean bool = true; -> Wahrheitswert (eigentlich 1 bit, aber da 1 byte größte ansprechbare einheit -> 1 byte)
char c = 'a'; -> ein Buchstabe - '' nicht vergessen! (2 bite/16 bit)
short lilnum = 14444 -> -32.768 bis 32.767
long bignum = 1555555 | -2^63 bis 2^63-1
byte = 127 | 8-bit = -128 bis 127
String = "Hello World"; Text, kein Primitiver Datentyp -> Ein Objekt/Klasse
public = Zugriffsrechte von Überall
protected = Zugriffsrechte nur im selben package
private = Zugriffsrechte nur in derselben Klasse
class = Keyword für die Erstellung einer Klasse
interface = Klasse, die nur aus Konstanten und abstrakten Methoden besteht (unterschied zur Abstrakten Klasse: abstrakte klassen kann breits eine implementierte methode mitbringen, ein interface kann das nicht, bei einem interface ist man gezwungen alles zu implementieren (bei abstrakter klasse nicht)); eine Art Vorlage
void = nichts (Rückgabetyp für wenn nichts zurückgegeben werden soll)(kann als Parameter auch verwendet werden)
static = sorgt dafür das Instanzen unabhängig sind, keine instanz von der klasse nötig, static methoden sind für jedes objekt gleich (wenn änderung: dann für alle obj) -> für ganzes Programm gültig, von überall drauf zugreifbar
enum = Enummeration, Aufzähltyp
bsp: public Enum Jahreszeiten{FRÜHLING; SOMMER; HERBST; WINTER}
Jahreszeiten jahreszeit = Jahreszeiten.FRÜHLING;
...
case FRÜHLING
case SOMMER
case HERBST
case WINTER
...
-> praktisch für einfaches Vergleichen (schwierig bei Strings, deswegen statt Strings Enum)
Annotationen = Eine Funktion die vor der Funktion ausgeführt wird (erst @bla dann wird die funktion ausgeführt) kann auch nach Funktion sein; generell für alles was davor oder danach ist
bsp: @Override, @Eventhandler
Eventhandler: wer wartet darauf das was passiert; registrieren benachrichtigen system
Exception = Fehler die geworfen werden (try catch) (können selber geworfen und gefangen werden) 3 Kathegorien von Exceptions (unchecked,checked, ...)
bsp: runtime exception, nullpointer exception
try... catch = Try-Block: versucht den Code auszuführen. Wenn eine Exception kommt, wird in den catch-Block gesprungen. (finally nach dem try-catch block, ist für alle exceptions also egal welche exception)
grundexceptions vererben weitere (z.b sql exception vererbt zur sql table not found exception)
auch: catch throwable (alles was geworfen wird wird aufgefangen)
weiterwerfen: soll nicht in der funktion behandelt werden, sondern wird an den funktionausführenden weitergegeben
-> keyword: throw
return = deklariert was zurückgegeben werden soll (Wert, Variable, Funktion)
new = erzeugt eine Instanz
if...else = Entscheidung (wenn dass, dann dass)(Wahrheitsabfrage/Fallabfrage)
switch...case = Entscheidung in einer anderen Form als if...else
->bei komplexeren Abfragen mit && und || ist if else-besser, bei einfacheren Abfragen ist switch case-besser (siehe oben bsp bei enum)
for = Kopfgesteuerte Schleife. Iteriert durch ein Objekt, eine Liste oder einen Zahlenwert
do...while = Fußgesteuerte Schleife. Wird beim ersten durchlauf sicher ausgeführt, dannach nur wenn Bedingung erfüllt.
while = Kopfgesteuerte Schleife. Solange Bedingung erfüllt, führe den Block aus.
## Programmiertechnische Begriffe
Instanzen / Objekte = Wenn man einen Konstruktor einer Klasse aufruft entsteht ein Objekt / eine Instanz der Klasse
bsp: List<int> listOfInts = new Arraylist<>();
wrapper Klasse = Klasse die sich um etwas drumrum wickelt (hat funktionalitäten/Methoden (z.b Integer klasse ist eine wrapper klasse und hat funktionen (im gegensatz zu int))) -> https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html
DAO = Data Access Object -> Eine Abstrahierung zu Datenbank
bsp. Du schreibst für eine DAO Funktionen, die datenbank aubrufe für dich machen. So hast du mit einer DAO dannach nur noch Funktionen die die Aufrufst und deine Daten bekommst/verschickst und musst dich nicht mehr um das SQL etc. kümmern
DTO = Data Transfer Object - Eine Klasse, welche alle Werte der Datenbank tabelle speichern kann, um diese dann von der DAO gefüllt zu erhalten oder zu versenden.
VO = Value Object - Ist eine Klasse ohne Setter, die beim einmaligen instanzieren durch den Konstruktor gefüllt wird und aus der anschließend nur noch gelesen wird.
ip adressen bestehen aus 4 byte (je 0 bis 255)