void add(int index, E element)
Methode einer Liste
Fügt ein Element vom Typ E an der Stelle index ein und verschiebt bereits vorhandene Elemente um einen Indexwert nach rechts
Was ist in dem Paket java.io in der Java-Klassenbibliothek enthalten?
Die wichtigsten Klassen für den Umgang mit Dateisystemen, Verzeichnissen und Dateien
Die wichtigste Klasse ist File
Wie sind Dateisysteme im Allgemeinen aufgebaut?
Dateisysteme sind hirachisch wie folgt aufgebaut:
Dateisysteme
Verzeichnisse
Dateien
Was repräsentiert die Klasse File?
Verzeichnisse und Dateien
Welche Methoden sind im Zusammenhang mit Verzeichnissen wichtig?
listRoots
Verzeichnisse lassen sich damit auflisten, also alle angeschlossenen Laufwerke.
listFiles
Damit lassen sich die in den Verzeichnissen enthaltenen Unterverzeichnisse und Dateien aufzählen.
Was ist der Pfad einer Datei oder eines Verzeichnisses?
Es ist die textuelle Repräsentation in der Dateisystemhirarchie
Zusammengesetzt ist der Pfad aus
Name des Hauptverzeichnis
Name der unterverzeichnisse in dennen die datei gespeichert ist. in hirachischer Reihenfolge
was ist ein Dateisystempfad?
Ein Dateisystempfad ist eine Zeichenkette, die den Pfad zu einem Ordner bzw. einer Datei in einem Dateisystem darstellt.
Die Ordner und Unterordner im Pfad werden über ein spezielles Trennzeichen voneinander getrennt.
Das Hirarchietrennzeichen ist abhängig vom Betriebsystem
Mit Welcher Konstante lassen sich Plattformunabhängige Trennzeichen für Verzeichnishierarchien programmieren?
File.seperator
Bsp:
String sep = File.seperator;
String pfad = sep + “var” + sep + “import” + sep;
System.out.println(pfad);
/var/import/
Was ist eine String-Verkettung und was ist die Besonderheit?
Diese bezeichnet das Zusammenfügen von zwei Strings zu einem.
Die Zeichenkette des zweiten Strings wird dierekt hinter die erste gesschrieben
Bei einer String-Verkettung werden zusätzlich temporäre String-Objekte erzeugt, eines für jede Verkettungsoperation.
String Buffer
String Buffer ist eine Klasse zur Verkettung vieler langer Strings
An eine Instanz der Klasse String Buffer können mit der Methode append beliebig viele Strings angefügt werden, ohne dass unnötig zusätzliche Objekte erzeugt werden.
Die hinzugefügten Strings werden in einer Art Puffer gehalten und erst beim Aufrufen der toString-Methode wird alles zu einem String zusammengebaut.
Was ist ein CSV-Fortmat?
Comma-Seperated Values
Dabei sind alle Attribute in ‘ ‘ eingefasst
Wie können die einzelnen Attribute aus einer CSV-datei heraus extrahiert werden und echte Objekte daraus erzeugen?
Mit indexOf die einzelnen Kommata suchen und dann mit substring die Attribute extrahieren
Sin zuätzliche Komma im Text enthalten, unabhängig der CSV-Datei, dann muss mit der Methode split die den String anhand der Trennzeichenkette aufteilt und die einzelnen Teile als ein Array von Strings zurück gibt.
Mit welche Klasse von Java repräsentiert die Datumsangaben?
java.util.Date
Objekte der Klasse Date stellen einen Zeitpunkt dar, also ein Datum und der genaue Zeitpunkt an diesem Datum
Der Default-Konstruktor erzeugt ein Objektt, das den genauen zeitpunkt seiner Erzeugung repräsentiert
Mit einem überladenen Konstruktor lassen sich die einzelnen Attribute eines Datums gezielt setzen
Bsp: Date datum2 = new Date(2013,12,24,17,45,15); Bedeutet 24.12.2013 17:45:15 Uhr
Welche Methoden Bieten Date-Objekte?
compareTo zum vergleichen
before und after sind die Methoden um zu entscheiden, wie zwei Datumsangaben zueinander in Relation stehen
Wie wird das Formatierte Ausgeben und Einlesen von einem Datum bei Java gelöst?
java.text.SimpleDateFormat
SimpleDateFormat formatiert ein Datum anhand eines Musters, mit dem der Benutzer genau angeben kann, wie ein Datum als String dargestellt werden soll.
zum Einlesen von Datumsangaben und Umwandlung in echte Date-Objekte wird die parse-Methode verwendet.
Bsp: SimpleDateFormat sdf;
sdf = new SimpleDateFormat(“dd.MM.yyyy”);
String datumString = “31.12.2013”);
Date datum = sdf.parse(datumString);
Welche vordefinierte Methoden sind in der Klasse DateFormat für die Datumsformate vorhanden?
getDateInstance
getTimeInstance
getDateTimeInstance
Welche Klasse bietet Java für die Abstrakte Darstellung von Datumsangaben in beliebigen Kalendersystemen?
java.util.Calendar
Bsp: Gregorianischer Kalender
GregorianCalendar kalender2 = new GregorianCalendar(2013,6,9,18,29,35)
Abfragen von
Wie werden im Gregorianischen Kalender die Attribute gesetzt?
setzen von Attributen bei GregorianCalendar:
kalender1.set(Calendar.YEAR, 2013)
kalender1.set(Calendar.MONTH, Calendar.August);
kalender1.set(Calendar.DAY_OF_MONTH, 24);
Wie werden im Gregorianischen Kalender die Attribute abgefragt?
Abfragen von Attributen bei GregorianValendar-Objekten:
int jahr = kalender1.get(Calendar.YEAR);
int monat = kaalender1.get(Calendar.MONTH);
int tagImMonat = kalender1.get(Calendar.DAY_OF_MONTH);
int wochentag = kalender2.get(Calendar.DAY_OF_WEEK);
int stunde = kalender2.get(Calenar.HOUR_OF_DAY)
int minute = kalender2.get(Calendar.MINUTE);
int sekunde = kalendar2.get(Calendar.SECOND);
Welche Methoden gehören zu den wichtigsten Methoden eines GregorianCalendar-Objekt?
roll
hiermit können einzelne Attribute einfach weitergeschaltet werden.
Im Ersten Parameter wird angegeben, wann ist der Startpunkt und im zweiten Parameter wird angegeben, wie oft das Attribut weiter geschaltet werden soll. (positive Zahl vorwärts, negative rückwärts)
Bsp: datumLetztePasswortänderung.roll(Calendar.Month, 6);
Was beinhaltet das Paket java.io in der Java-Klassenbibliothek?
alle wichtigen Klassen für den Umgang mit dem Dateisystem, Verzeichnissen und Dateien
Was repräsentiert die Klasse File in Java?
Mit der Methode listRoots lassn sich Wurzelverzeichnisse auflisten
File[] roots = File.listRoots();
for(File root : roots){
System.out.println(root);
}
Was ist die Undo- Funktion?
Mit dieser Funktion können Benutzeraktionen rückgängig gemacht werden. Hierzu müssen alle Aktionen protokoliert werden.
Mit welchen Funktionen arbeitet die Undo-Funktion?
java.util.ArrayDeque (Als Array realisiert)
oder als Interface
java.util.List
java.util.Stack
Was ist die Aufgabe von der Datenstrucktur Stack?
Die Stack-Datenstrucktur entspricht einem Stapel obenauf legen und dort wieder herunter nehmen.
Nenne die Methoden von Deque zur verwendung as Stapel-Datenstrucktur.
addFirst(e: E)
removeFirst(): E
peekFirst(): E
addLast(e:E)
removeLast(): E
Nenne die Methoden des interface java.util.Queue
Methoden die im Fehlerfall eine Exeption werfen:
add(e: E): boolean “in Schlange einreihen”
remove(): E “vorne entnehmen”
element(): E “vorne lesen”
Methoden die im Fehlerfall mit Rückgabewerten quittieren:
offer(e:E): boolean
poll(): E
peek(): E
Womit werden Warteschlangen Programmiert?
Queues
Welche Klasse sortiert neue Elemente nach Priorität, die durch ein betimmtes Attribut repräsentiert wird?
PriorityQueue
Welche Klasse soriert neue Elemente nach der Reihenfolge, welche diese internals einfache verkettete Liste speichert?
CurrentLinkedQueue
Was ist die Literal-Schreibweise?
Mittels der Literal-Schreibweise können bestimmte Werte dierekt als Zeichenfolgen im Quellcode angegeben werden
Sie ermöglicht es einen String als einen Wert, ähnlich wie eine Zahl oder einen Wahrheitswert, hinzuschreiben
boolean wahrheitswert = true;
int ganzzahl = 12;
float gleitkommazahl = 1.45f;
String gruss = “Hallo Welt”;
Wie können Strings mit anderen Strings und primitiven Werten verknüpft werden?
mit dem + Operator
String gruss = “Hallo Programmierer”;
gruss = gruss + “ , “;
String ausgabe = gruss
+ “ es wuren “ + args.length + “ Parameter übergeben.”;
Welche Konstruktoren stellet die Klasse String zur Verfügung, mit dennen sich String-Instanzen erzeugen lassen?
Erzeugen eines leeren String
String leer = new String();
Copy-Konstruktor der Klasse String
String kopie = new String(“Original”);
Instanziierung mit Char-Array
char[] c = {‘ J’, ‘a’, ‘v’, ‘a’};
String ausChars = new String(c);
Wie werden Strings aus Wahrheitswerten oder Zahlen erzeugt?
also
Umwandlung von primitiven Datentypen in Strings
Es stehen keine Konstruktoren für die Erzeugung von Strings aus Wahrheitswerten oder Zahlen zur Verfügung.
Man kann denn jeweiligen primitiven Wert mit einem Leerstring verketten
Bsp: int a= 12;
String aString1 = “ “ + a;
Erzeugen einer Stringrepräsentation durch die statische Methode valueOf der Klasse String
Bsp: int a = 12,
String aString2 = String.valueOf(a);
Wie werden aus Strings gültige Zahlenwerte erzeugt?
Es werden statische Methoden der Wrapper-Klassen verwendet (Boolean, Byte, Short, Integer, Float, Double)
String bString = “true”;
boolean bool = Boolean.parseBoolean(bString);
String byteString =”127”;
byte byt = Byte.parseByte(byteString);
String shortString = “255”;
short s = Short.parseShort(shortString);
string intString = “12345”;
int i = Integer.parseInt(intString);
String longString = “12345678”;
long l = Long.parseLong(longString);
String floatString = “12.4”;
float f = Float.parseFloat(floatString);
String doubleString = “1.12245”;
double d = Double.parseDouble(doubleString);
Was passiert, wenn beim Umwandeln von Strings in primitive Datentypen ein falsches Format verwendet wird?
Ein falsches Format führt zu einer Exception
Welche Instanzmethoden bietet die Klasse String, mit denen man den Inhalt der Strings analysieren und verarbeiten kann?
boolean contains(String s)
- gibt true zurück, wenn der String den Teilstring im Parameter s enthält
boolean startsWith(String prefix)
- gibt true zurück, falls der String mit dem Parameter prefix beginnt
boolean endsWith(String suffix)
- gibt true zurück, falls der String mit dem String im Parameter suffix endet
int indexOf(char c);
int indexOf(String s);
Gibt die Stelle zurück, an der das Zeichen/String im Parameter zum ersten Mal auftaucht.
int lastIndexOf(char c);
int lastIndexOf(String s);
Gibt die Stelle zurück, an der das Zeichen/String im Parameter zum letzten Mal auftaucht.
Wie kann nach der Position eines gegebenen Teilstrings gefragt werden?
indexOf liefert die Position des ersten Auftretens
lastIndexOf liefert die Position des letzten Auftreten
Methoden für die Manipulation von Strings
char charAt(int index)
Gibt das Zeichen an der durch index bezeichneten Stelle im String zurück
String substring(int anfang, int ende)
Gibt den Teilstring zwischen der Stelle anfang und ende zurück
String replace(char alt, char neu)
String replace(String alt, String neu)
gibt einen String zurück, in dem alle Vorkommnisse des Zeichens alt durch das Zeichen neu ersetzt wurde
String toLowerCase()
Gibt einen String zurück, in dem alle Zeichen der Originalstrings klein geschrieben sind
String toUpperCase()
Gibt einen String zurück, in dem alle Zeichen der Originalstrings groß geschrieben sind
String trim()
Gibt einen String zurück, bei dem alle nicht-druckbaren Zeichen(Leerzeichen, Umbrüche, Tabulatoren) am Anfang und am Ende des Originalstrings entfernt wurden.
Was bedeutet unveränderliche String-Objekte?
Strings sind Objekte , deren Wert allein durch die repräsentierte Zeichenkettefestgelegt ist. Eine neue Zeichenkette erfordert daher auch ein neues String Objekt.
Das Manipulieren von String Objekten erzeugt immer neue Objekte.
Wie werden AString Objekte miteinander verglichen?
compareTo
vergleicht zwei Strings anhand der lexikograpfischen Ordnung
(Also kommt String A vor String B im Alphabet dran)
equals
gibt true zurück wenn dieselben Zeichen in der selben Reihenfolge vorkommen inklusive Groß und Kleinschreibung
equalsIgnoreCase
vergleicht die Reihenfolge der Zeichen unabhängig der Groß und Kleinschreibung
boolean add(int index, Collection extends E> c)
Es fügt eine ganze Collection an der Stelle index ein. Die Elemente der einzufügenden Collection können beliebigen Typs sein.
Vorrausstzung istdass er sich zumindest in einer Vererbungsbeziehung mit dem Element-Typ der Ziel-Collection (E) befindet
Liefert true zurück, falls die Operation erfolgreich war.
E remove(int index)
Löscht ein Objekt an der Stelle index und gibt eine Referenzauf das gelöschte Element zurück
set(int index, E element)
Metode einer Liste
tauscht das übergebene Element mit dem Element an der Position index aus.
subList(int from Index, int toIndex)
Liefert einen Ausschnitt der Liste zurück
da es sich um Referenzdatentypen handelt, wirken sich Veränderungen an der neuen Teil-Liste auch auf das Original aus.
Wie funktioniert eine ArrayList und was sind die Vor- und Nachteile?
Alle Elemente werden intern in einem Array gespeichert.
Es bietet einen schnellen Zugriff.
Änderungen am Array sind sehr aufwändig
(Nachfolgende Listenelemente müssen verschoben werden, wenn sie nicht am Ende der Liste eingefügt werden)
Sie sind kompfortabler zu programmieren.
LinkedList
Ist eine Dynamischere Lösung Lösung zur ArrayList
Es ist eine Liste, die mitvhilfe einer Verkettung von Objektreferenzen implementiert wurde
(das heißt, die gespeicherten Objekte haben jeweils eine Referenz auf ihren Vorgänger und ihren Nachfolger )
Bei einem wahlfreien Zugriff auf ein beliebiges Element, muss im schlimmsten Fall die gesammte Liste durchlaufen werden.
Daher ist der Zugriff langsammer
Es ist leivhter Elemente an beliebiger Stelle einzufügen oder zu löschen.
Mengen Datenstrukturen
Die se Strukturen dienen zur Verwaltng von zusammengehörigen Elementen
Die Rheienfolge ist uninteressant
Es dürfen keine doppelten Elemente vorkommen
Durch welches Interface werden Mengen Datenstrukturen definiert?
java.util.Set
Bsp für Implementierungen:
java.util.TreeSet
java.util.HashSet
Es stellt sicher, dass niemals die Bedingungung für ein belibiges Element-Paar x und y gilt: x.equals(y) == true
TreeSet und HashSet
Es sind zwei prominente Implementierungen des Collection-interfaces
TreeSet sortiert alle Elemente in einer Datenstruckturd, die wie ein Suchbaum aufgebaut sind
HashSet nutzt intern eine Hash-Tabelle
Die Geschwindigkeit beim Lesenden Zugriff auf die Elemente ist aufwändiger, als beim schreibenden Zugriff
Was ist die Aufgabe von java.util.Map?
Die primäre Aufgabe dieser Datenstrukturen ist Schlüssel auf Werte abzubilden.
Schlüssel und Werte werden Paarweise gespeichert und beide können beliebige typen sein.
Das dazu gehörige Interface heißt Map.Entry
Methoden für den Zugriff auf den Schlüssel sowie zum Lesen und Ändern des Wertes im interface Map.Entry<K,V>
getKey(): K
getValue(): V
setValue(value: V): V
equals(o: Object): boolean
hashCode(): int
Welche Regeln gelten für Maps?
Ein Schlüssel ist eindeutig, ihn gibt es entweder einmal in einer Map oder gar nicht
Zu einem schlüssel existiert nur ein Wert
Wenn ein Paar aus Schlüssel und Wert in einer Map gespeichert werden soll, in dem der Schlüsel bereits existiert, so wird der dazugehörige Wert überschrieben.
Welche Methoden bietet das Interface Map an
Set keySet(): gibt ein Set mit allen Schlüsseln zurück
Collection values(): gibt eine Collection mit allen Werten zurück.
Setry> entrySet(): gibt eine Menge zurück, die aus den Schlüssel/Wert-Paaren der Mapbesteht
Welche Methoden liefern Sichten zum Iterieren in einer Map?
keySet(): Set<K>
values(): Collection<V>
entrySet(): Set<Map.Entry<K,V>
Welche methoden dienen zum Lesen und Hinzufügen von Schlüssel/Wertpaaren in einer Map?
get(key Object): V
put(key: K, value V): V
putAll(m: Map<K, V>)
containsKey(key: Object): boolean
containsValue(value: Object): boolean
Nenne übliche Collections- Methoden aus dem Interface Map.
clear()
isEmpty(): boolean
Was sind Wrapper-Klassen?
Diese Klassen können Werte von primitiven Datentypen in Objekte kapseln, sodass sie wie Objekte behandelt werden können.
Welche Wrapper-Klassen gibt es?
Byte, Short, Integer, Long, Float, Double, Char
Wrapper-Klassen sind immutable, also nach der Instanziierung nicht emhr veränderbar
Welche java.util.Map gibt es ?
HashMap
TreeMap
LinkedHashMap
WeakHashMap
Eigenschaften einer HashMap
Der Speicherort eines einzufügenden Elements wird mit einer Typ-spezifischen Hash-Funktion berechnet.
Die Elemente werden nicht sortiert gespeichert
Die Datenstrucktur ist flach und bietet ein äußerst schnelles Zugriffsverfahren
das Speichern dauert länger, da die Hash-Funktion mathematisch komplex ist.
Eigenschaften einer TreeMap
speichert in einer Baumstrucktur
Es wird anhand des Schlüssels einsortiert
Wenn man auf ein Element zugreifen möchte, kann es sein, dass man den ganzen Baum durchsuchen muss. (Der Aufwand ist sehr gering)
Elemente lassen sich schneller einsortieren
Eigenschaften einer LinkedHashMap
Es ist eine spezialisierte Hash Map
Speichert die Elemente in einer doppelt verketteten Liste
Die interne Ordnung orientiert sich entlang der Hash-Werte (es ist sinnvoll wenn die Ordnung eine Rolle spielt)
was ist eine WeakHasMap
sie ähnelt der HashMap-Implementierung
sie arbeitet mit einer Hash-Tabelle
Die Laufzeitumgebung darf bei Speicherknappheit Elemente löschen.
Wie werden Kommentare bei Java eingeleitet?
// der Kommentar wird bis Zeilenende gezählt
// Hat ein Kommentar mehrere Zeilen, muss jede neue Zeile wieder mit “//” beginnen.
Iterator
Dieser unterstützt den Programierer beim Durchlaufen (Iterieren) von Elementen einer Collection.
Was bedeutet Iterator?
Es bedeutet alle Elemente innerhalb einer Programmierschleife, zu durchlaufen und bei Bedarf zu verarbeiten.
Der Iterator funktioniert wie ein Lesezeichen bei Elementen einer Collection.
Welche Methoden besitzt der Iterator?
hasNext(): es wird geprüft ob es an der aktuellen Position des Iterators noch ein neues Element gibt.
next(): Damit wird zurück gegeben welches Element sich an der aktuellen Position des Iterators befindet.
remove(): kann das aktuelle Element, auf das sich der Iterator per next() positioniert hat, aus der Collection entfernen.
Einsatz des Iterators am Beispiel einer Methode zur Bereinigung von Kundendaten…
public void bereinigeAlleKunden(Collection<Kunde> c) {
Kunde k = null;
Iterator<Kunde> it = c.iterator();
while(it.hasNext()){ -solange ein weiteres Element in der Collection-
k = it.next(); -entnehme das nächste Element aus der Collection
if(k.getGeschlecht().equals(“ “))
it.remove();
Die erweiterte for- Schleife vereinfacht das Durchlaufen von beliebigen Klassen, die das Interface Iterable Implementieren.
Wie wird diese formuliert?
public void gebeAlleKundenAus(Collection<Kunde> c) {
for(Kunde k : c){
System.out.println(k);;
Was ist eine Liste?
Eine Liste dient der Speicherung von beliebig vielen Elementen in einer festen Reihenfolge mit beliebigem Typ
Es kann wahlfrei und sequenziell zugegriffen werden.
Welche Methoden stellt eine Liste zusätzlich zu verfügung?
void add(int index, E element): Fügt ein Element vom Typ E an der Stelle index ein und verschiebt bereits vorhandene Elemente um einen Indexwert nach rechts
boolean addAll(int index, Collectionextends E> c): Es fügt eine ganze Collection an der Stelle Index ein. Vorraussetzung ist, dass die Collection sich in einer Vererbungsbeziehung mit dem Element-Typ der Ziel-Collection befindet.
e remove(int index): Löscht ein Objekt an der Stelle index und gibt eine Referenz auf das gelöschte Element zurück.
set(int index, E element): Tauscht das übergebene Element mit dem Element an der Position index aus.
subList(int fromIndex, int toIndex): Tauscht das übergebene Element mit dem Element an der Position index aus.
subList(int fromIndex, int toIndex): Liefert einen Ausschnitt der Liste zurück. Achtung: Da es sich um Referenzdatentypen handelt, wirken sich Veränderungen an der neuen Teil- Liste auch auf das Original aus.
Collection Framework
Diese Framework ist eine Menge an häufig benötigten Datenstrukturen und dazu passenden Such- und Sortieralgorythmen.
Die Hauptaufgabe bestehen darin, Daten effizient zu speichern und genauso einen effizienten Zugriff darauf zu ermöglichen.
Worin muss man bei der Wahl des Datenspeicher wählen?
Eine effiziente Datenspeicherung und ein genauso effizienter Zugriff auf die Daten, sind oft konkurierende Ziele.
Man muss also oft wählen, zwischen einer sparsamen Speicherung und einem schnellen Zugriff.
Was sind die wichtigsten Methoden des Interface Collections?
boolean add(E e); - fügt Objekt hinzu
boolean remove(Object o); - entfernt ein Objekt
int size(); - liefert Anzahl der Objekte zurück (nicht die Kapazität)
boolean isEmpty(); - prüft, ob irgendwelche Objekte enthalten sind.
boolean contains(Object o); - prüft, ob ein bestimmtes Objekt enthalten ist.
void clear(); - entfernt alle Objekte der Collection.
Iterator<E> iterator(); - liefert den Iterator zurück
Object[] toArray(); - liefert die Collection als einfachen Array zurück
Mit welcher Implementierung werden Elemente in speziell geordneter Reihenfolge programiert?
Interface java.util.List:
java.util.ArrayList (als Array realisiert)
java.util.LinkedList (als Verkettung von Referenzdatentypen realisiert)
Mit welcher Implemntierung werden keine doppelten Elemente gespeichert, wobei die Reihenfolge egal ist?
Interface: java.utils.Set
java.util.TreeSet (als Baum realisiert)
java.util.HashSet (als Hash-Tabelle)
Mit welcher Implementierung wird ein schneller Zugriff anhand der Kundennummer ermöglicht?
Interface: java.util.Map
java.util.TreeMap (als Baum realisiert)
java.util.HashMap (als Hash-Tabelle)
java.util.LinkedHashMap (Kombination aus Hash-Tabelle und verketteter Liste)
Mit welcher Implementierung soll es ermöglicht werden, dass die Bestellschritte des Benutzers rückgängig gemacht werden können?
Interface: java.util.Deque
oder
Interface: java.util.List
Mit welcher Implementierung ermöglicht man die Bearbeitung in der Reihenfolge des Eingangs (“First in, First out”)?
Interface: Java.util.Queue
Kann die Kapazität eines Arrays nach Instanziierung verändert werden?
nein
Was erfährt man, wenn auf “Attribut length” zugegriffen wird?
Dieses Attribut gibt die Kapazität eines Arrays wieder.
NICHT die Anzahl der gespeicherten Elemente.
aktualisiereAlleKunden()
In einer Schleife werden alle Elemente (Klassen, Attribute) eines Arrays durchlaufen und aktualisiert.
Mit hilfe des Attributs length kann festgestellt werden, wann das Ende eines Arrays erreicht ist.
public void aktualisiereAlleKunden(){
for(int index=0; i<kunden.length; index++)
if(kunden[index] !=null)
kundenSpeicher.aktualisieren(kunden[index]);
In Java ist es möglich Arrays zu verschachteln, was bedeutet das?
Die Elemente eines Arrays sind ebenfalls Arrays.
Es sind dann mehrdimensionale Arrays.
Mehrdimensionale Arrays werden deklariert, indem mehr als ein Paar eckige Klammern gesetzt werden.
int [] [] matrix = new int [] [] {{7,3,2},
{9,2,7}};
Was ist der Vorteil von Arrays?
es ist Bestandteil der Java-Syntax, es muss keine Bibliothek importiert werden.
Arrays können beliebige Typen enthalten. (primitive Datentypen, Strings, selbst programmierte Klassen)
Nachteile von Arrays?
Man muss sich selbst um die Kapazität kümmern.
Ist ein Array voll muss ein größeres Array initialisiert werden und alle Elemente müssen übertragen werden.
Ist ein Array zu groß gewählt, wird unnötig viel Speicherplatz reserviert.
Lücken in sortierten Arrays zu schließen ist mit großer Anstrengung verbunden.
Arrays haben eine begrenzte Funktionalität. Also mit zusätzlichen Programmieraufwand verbunden.
API-Dokumentation
Application Programming Interface
Diese dient als Nachschlagewerk, das Aufschluss über die bereitgestellten Bibliotheksfunktionen bietet.
Klasse “Scanner”
Diese Klasse bietet Funktionen zum Einlesen von Benutzereingaben auf der Konsole.
java.util
Eine Paket in der Java Klassenibliothek, welches allgemein nützliche Datenstrukturen anbietet.
Arrays
Es handelt sich um eine sehr einfache, in der Java Sytax fest eingebaute Möglichkeit, Listen von Werten oder Objektreferenzen zu speichern.
Wie wird in Arrays gespeichert?
Die Elemente eines Arrays werden sequenziell hintereinander in den Hauptspeichr geschrieben.
Man greift auf ein beliebiges Element zu, indem man dessen Index angibt.
Der Index eines Elements entspricht der Position innerhalb des für den Array reserrvierten Speicherbereichs.
Wie kann ein Array deklariert werden?
Festlegen des Datentyps und eine Eckige Klammer, mit dem Bezeichner hinter der Klammer.
private Kunde [] kunden;
Instanziierung von Arrays
Die Instanziierung erfolgt mit new
Bsp: kunden = new Kunde[42];
in der Klammer wird die gewünschte Kapazität eingetragen
Bei der Instanziierung werden die Standard-Werte des jeweiligen Datentyps vorbelegt.
Bsp: Ein int-Array wird mit Nullen gefüllt
ein boolean mit false-Werten
Arrays für komplexe Datentypen mit Null-Werten.
Initialisierung
Wird angewendet bei der Instanziierung eines Arrays
Die Initialwerte werden in geschweiften Kklammern geschrieben.
Mit den Initialwerten, wird auch die Kapazität des Arrays festgelegt.
Bsp: kunden = new Kunde[] {new kunde(“Ulf”),
new Kunde (“Ilse”),
new kunde (“Rita”)};
Debug-Ausgaben
Diese Dokumentieren den aktuellen Zustand von z.B. Objektattributen auf der Konsole oder in einer speziell dafür vorgesehenen Log-Datei.
Logging-Bibliotheken
Diese vereinfachen die Handhabung von Debug-Ausgaben im Quellcode.
Classpath
Darunter versteht man den Ort, an dem alle für das Kompilieren eines Quelltextes benötigten Bibliotheken abgelegt werden.
Schlüsselwort import
Ein Schlüsselwort um nicht in jeder Anweisung den vollen Namen der benötigten Klassen ausscheiben zu müssen.
Es vereinfacht den Quellcode.
import in Kombination mit “ * ”
Die import-Anweisung gekoppelt mit dem “ * “ Zeichen lassen sich auch ganze Pakete importieren.
Bsp.:
import org.apache.logging.log4j.*;
Standard- Klassenbibliothek
Diese unterstützt den Programierer mit einer Vielzahl nützlicher Klassen für die unterschiedlichsten wiederkehrenden Programmieraufgaben.
java.applet (Ein Paket in der Klassenbibliothek)
Programmierung HTML-basierter, im Browser ausführbarer Oberflächen
java.awt (Paket in der Klassenbibliothek)
GUI-Programmierung mit AWT (Abstract Window Toolkit)
java.beans (Paket in der Klassenbibliothek)
Datencontainer zur Übertragung, Datenobjekte für Persistenzframeworks
java.io (Paket in der Klassenbibliothek)
Ein-/Ausgabe-Operationen, Datenströme
java.lang
Fundamentale Klassen der Programmiersprache (z.B. String). Sie müssen nicht importiert werden.
java.net (Paket in der Klassenbibliothek)
Netzwerkfunktionen
java.nio (Paket in Klassenbibliothek)
Zugriff auf (virtuelle) Dateisysteme, z.B. über FTP.
java.rmi (Paket in Klassenbibliothek)
Entfernter (auf anderen VM) Objektzugriff, Zugriff, aber Ausnahmen abfangen.
java.security (Paket in Klassenbibliothek)
Zertifikate, Kryptographie
java.sql (Paket in Klassenbibliothek)
Datenbankfunktionen
java.util (Paket in Klassenbibliothek)
Daten für Datenstrukturen
javax.swing (Paket in Klassenbibliothek)
GUI-Programmierung mit Swing
Wenn der == Operator zu ungenau und die equals()-Methode zu aufwendig ist, welche alternative Methode kann eingesetzt werden?
hasCode()- Methode
Was ist der Zweck von Java-Annotationen?
Damit gewisse Aussagen mit dem Java-Compiler überprüft werden können.
Was bezwecken Code-Konventionen?
Sie stellen Regeln auf, die das Lesen und Verstehen von Quelltext vereinfachen sollen.
Welche Konventionen gelten bei der Benennung von Code?
Paketnamen werden stets klein geschrieben.
Klassen und Interfaces werden als Nomen benannt und stets am Anfang groß geschrieben. Besteht der Name aus mehreren Wörtern wird alles zusammen geschrieben, nur der Anfangsbuchstabe von jedem Wort wird groß geschrieben.
Klassenkonstanten werden komplett großgeschrieben und Wörter mit Unterstrich voneinander getrennt.
Methodennamen sind möglichst immer Verben.
Attribute und Vaiablen sollen sinnvoll benannt sein, sodass sich aus dem Namen bereits eine Beschreibung des Inhalts schließen lässt.
Benenne die Rheienfolgekonvention bei der Angabe von Klassenelementen.
Paketdeklaration
Importe (alphabetisch sortiert)
Klassenvariablen und Konstanten
Instanzvariablen
Konstruktoren
Getter und Setter
weitere Methoden.
Benenne die Konventionen bei der Setzung von Leerzeilen und Leerzeichen
Leerzeilen teilen den Quelltext in sinvolle Abschnitte.
Leerzeichen helfen dabei, die Bestandteile einer Anweisung in einer Codezeile auf einen Blick zu unterscheiden.
Warum ist der Programmierstil wichtig?
Er wirkt sich auf die Leesbarkeit, Verständlichkeit und Wartung des Quellcode aus.
Was ist eine Annotation?
Eine Meta-Information zu Quellcode, die vom Java-Compiler programmatisch ausgewertet werden kann.
Wie beginnt eine Annotation?
@-Zeichen
Was sind die zwei häufigsten Annotationen?
@Override
kennzeichnet Methoden, die überschrieben wurden. Wurde Sie nicht übrschrieben, bricht der Copiler mit einem Fehler ab.
@Deprecated
kennzeichnet veraltete Klassen, Attribute und Methoden, die im neuen Code nicht mehr verwendet werden sollen.
Wie werden mehrzeilige Kommentare am Besten eingeleitet/ eingefasst?
/*
*Kommentar
* ….
*/
Wann werden geklammerte /* */ Kommentare meistens verwendet?
Bei längeren Erklärungen im Text.
Was wird in Klassenkommentaren beschrieben?
Zweck einer Klasse
Unter welchen Umständen wird sie verwendet
Was muss bei der Vererbung beachtet werden
Was sagen Attrributkommentare aus?
Beschreibung eines Attributs.
Was ist der Zweck von Methodenkommentaren?
Zweck der Methode
Bedeutung der Parameter
Was wird unter welchen Voraussetzungen zurück gegeben
Was ist Javadoc und wofür wird es verwendet?
Externes Programm welches aus speziell geschriebenen Kommentaren, eine Dokumentation erstellt.
Der Kommentar wird mit /** eingeleitet und */ beendet.
Welche Javadoc Tags gibt es und was beschreiben Sie?
@param wird für die Beschreibung eines Methoden-Parameters verwendet. Für jeden Parameter wird ein eigenes @param-Schlüsselwort verwendet.
@return wird verwendet, um zu beschreiben, was die Methode unter welchen Umständen zurückgibt.
@throws führt mögliche Fehlerquellen auf und die Exceptions, die dabei geworfen werden. Pro möglicher Exceptions wird ein @throws verwendet.
Aus welchem Grund werden Kommentare im Quellcode verwendet?
Den Sinn und Zweck von Codezeilen direkt an Ort und Stelle zu dokumentieren und zu beschreiben.
Was sind Meta-Informationen?
Zusätzliche Details zum Quellcode, die Aussagen über den Code machen.
toString() Methode was löst sie aus?
Ausgabe von beliebigen Objektinhalten als Zeichenkette.
Wofür ist toString() gut und wie wird sie Programmiert?
Es dient der Auslagerung der Konsolenausgabe in eine separate Methode.
Die Methode to String wird in der Klasse selbst definiert. Also was und wie etwas beim Aufruf dieser Methode in der Konsole herausgegeben wird.
Welcher Operator ruft indirekt toString() auf?
+
Objekt o= New Kunde (…);
System.out.println(“ In der Main Methode: ” + o);
== Operator was macht er?
Objekte werden mit dem == Operator hinsichtlich ihrer Identität, nicht hinsichtlich ihres Inhalts verglichen.
Welche Methode dient dem Inhaltlichen Vergleich von Objekten?
equals()
Was liefert die Methode equals() als Ergebnis?
Einen Wahrheitswert (true, false)
Was wird vor dem eigentlichen Vergleich von Inhalten zweier Objete geprüft werden?
Haben die beiden Objekte die gleichen Referenzen? If(this == obl)
Handelt es sich wirklich um zwei Objekte der gleichen Klasse? If(obj instanceof Kunde)
Anschließend können die Inhalte miteinander verglichen werden.
Was bildet den Abschluss von der equals() Methode?
Return super.equals(obj)
Welche Anforderungen sollten beim Implementieren der equals() Methode beachtet werden?
Reflexiv: Wird in der Methode dasselbe Objekt verglichen , muss dass Ergebnis immer ‘true’ sein. X.equals(x) == true
Symetrisch: Es ist egal in welche Richtung der Vergleich stattfindet, das Ergebnis muss immer gleich sein. X.equals(y) oder y.equals(x)
Transitiv: Wenn ein Objekt mit jeweils zwei anderen Objekten identisch ist, dann sind die anderen beiden auch Identisch
Konsistent: solange die Attribute unverändert bleiben, liefert eine Vergleichsoperation stets das gleiche Ergebnis.
Existent: Wenn ein zu vergleichendes Objekt nicht existiert, dann wird der Vergleich immer zu falten ausgewertet.
Was ist die Aufgabe der hashCode()-Methode?
Einen möglichst eindeutigen Schlüssel, den hashCode() für ein Objekt zu erzeugen, anhanddessen man die Objekte miteinander Vergleichen kann.
Wie nennt man den Vorgang, bei dem ein hashCode() für ein Objetkt erzeugt wird?
Hashing
Wie wird ein HashCode() erzeugt?
Jeder Buchstabe wird mit einer stets unterschiedlich potenzierten Primzahl multipliziert. Die Summe dieser Produkte ergibt den hashCode().
Was muss bei der eigenen Implementierung der hashCode() Methode beachtet werden?
Die Methode muss stabil sein. Inhaltlich gleiche Objekte sollten immer den gleichen hashCode() erzeugen.
Die Berechnung muss zur equals()- Methode passen. Es muss die gleichen Attribute einbeziehen.
hashCodes() sollten breit gestreut sein, d.h. nur wenige unterschiedliche Attributbelegungen sollen den gleichen Hash-Wert erzeugen.
Es sollen nur Identitätsstiftende Attribute mit einbezogen werden. Also nur Attribute, die genau einem Objekt zuzuordnen sind. Bsp. die Adresse des Kunden ist nicht Identitätsstiftend.
Was bedeutet Interface Comparable?
Dieses dfiniert eine Schnittstelle zur Implementierung einer Ordnung.
Welche Funktion Vergeicht Objekte untereinander, inwiefern Sie größer,kleiner, älter oder jünger ist?
compareTo()
Interface Comperable
Definiert eine Schnittstelle zur Implementierung einer Ordnung.
Wrapper - Klassen
Diese Kapseln primitive Datentypen in Objekte, sodass sie wie Objekte behandelt werden können.
compareTo() Methode gehört zu welcher Klasse und kann nur welche datentypen verarbeiten?
Es gehört zur Klasse String und verarbeitet alles mit Zahlen.
Bei der Sortierung von Objekten in Alphabetischer Reihenfolge z.B. Name Nachnahme, welche Funktion wird verwendet?
compareToIgnoreCase()
Welche sachverhalte sind bei der Methode clone() zu beachten?
Die Methode gehört zur Klasse Object und wurde als protected geschrieben. Nur Unterklassen können diese Methode shen. Um darauf zuzugreifen muss Sie in public überschrieben werden.
Es muss das Interface Clonable implementiert werden, damit die Klasse gecloned werden kann.
Auf welche Arten können Klone von Objekten erzeugt werden?
Copy-Konstruktor
clone()
Wofür sorgt der Aufruf der Implementierung clone()?
Er sorgt dafür, dass alle Attribute des zu klonenden Objekts in ein neues Objekt kopiert werden und dieses Objekt zurück gegeben wird.
Was ist eine flache Kopie und eine tiefe Kopie?
Eine flache Kopie enthäklt lediglich die Referenzen auf andere objekte.
Eine tiefe Kopie schließt eine Kopie der referenzierten Objekte mit ein.
Was erzeugt clone() für eine Kopie?
Flache Kopie.
Last changed4 hours ago