Sem I (Program I) - N5 Flashcards
Wo lebt eine Referenzvariable?
Referenzvariable auf dem Stack, während das Objekt, auf das sie verweist, auf dem Heap lebt.
Wo leben die Instanzvariablen des Objektes?
im Heap
Wann werden Instanzvariablen initialisiert?
Instanzvariablen werden in Java zu dem Zeitpunkt initialisiert, wenn das Objekt, zu dem sie gehören, erstellt wird.
Wann sind zwei Objekte gleich?
Wenn sie auf dasselbe Objekt im Speicher verweisen. Dies wird mit dem ==-Operator überprüft.
Was ist eine Instanzmethode und wie wird sie verwendet?
Eine Instanzmethode ist eine Methode, die an einem bestimmten Objekt einer Klasse aufgerufen wird und typischerweise auf die Instanzvariablen dieses Objekts zugreifen und diese manipulieren kann
Was ist eine Klassenmethode und wie wird sie verwendet?
Eine Klassenmethode, auch als statische Methode bezeichnet, ist eine Methode, die zur Klasse selbst gehört und nicht zu einer Instanz der Klasse. Klassenmethoden werden mit dem Schlüsselwort static deklariert und können ohne die Erstellung eines Objekts der Klasse aufgerufen werden.
Hat eine Klassenmethode Zugriff auf nicht statische Attribute (Instanzvariablen) einer Klasse?
Nein
Kann ein Objekt der Klasse auf eine Klassenmethode mit Punkt zugreifen: objekt.methode()? (Java)
Ja, ein Objekt der Klasse kann auf eine Klassenmethode (statische Methode) mit Punktnotation zugreifen: objekt.methode().
Wie definiert man eine Variable, die allen Objekten der Klasse gemeinsam sein soll und von ihnen verändert werden kann?
In Java können Sie eine Variable definieren, die von allen Objekten einer Klasse gemeinsam ist und von ihnen verändert werden kann, indem Sie ein sogenanntes Klassenattribut oder eine statische Variable verwenden. Sie definieren eine solche Variable mit dem Schlüsselwort static.
public class Beispiel { // Klassenattribut oder statische Variable public static int gemeinsameVariable = 0; public static void main(String[] args) { Beispiel obj1 = new Beispiel(); Beispiel obj2 = new Beispiel(); // Ändern der gemeinsamen Variable über Objekt 1 obj1.gemeinsameVariable = 10; // Zugriff auf die geänderte gemeinsame Variable über Objekt 2 System.out.println(obj2.gemeinsameVariable); // Ausgabe: 10 } }
Wird durch eine Klassenvariable eine Objekt- oder eine Klasseneigenschaft definiert?
In Java definiert eine Klassenvariable (auch als statische Variable bezeichnet) eine Klasseneigenschaft und nicht eine Objekteigenschaft.
Was ist eine Referenzvariable und wo lebt sie?
Eine Referenzvariable speichert die Speicheradresse eines Objekt und lebt in Stack
Können zwei Referenzen auf dasselbe Objekt zeigen?
Ja
Sind zwei Objekte mit identischen Werten für alle Instanzvariablen gleich?
nicht automatisch gleich
Was ist der Unterschied zwischen einer Instanzvariable und einer Klassenvariable
Instanzvariable
1) Eine Instanzvariable gehört zu einer bestimmten Instanz (Objekt) einer Klasse.
2) Sie wird innerhalb einer Klasse, aber außerhalb von Methoden, Konstruktoren oder Blöcken deklariert, ohne das Schlüsselwort static
3) Sie werden über das Objekt referenziert
Klassenvariable
1) Eine Klassenvariable gehört zur Klasse selbst, nicht zu einer bestimmten Instanz.
2) Sie wird innerhalb einer Klasse, aber außerhalb von Methoden, Konstruktoren oder Blöcken deklariert, und zwar mit dem Schlüsselwort static.
Was ist der Unterschied zwischen einer Instanzmethode und einer Klassenmethode?
Instanzmethode
1) ist eine Methode, die auf eine bestimmte Instanz einer Klasse angewendet wird.
2) Sie wird ohne das Schlüsselwort static deklariert.
Klassenmethode
1) ist eine Methode, die zur Klasse selbst gehört, nicht zu einer bestimmten Instanz.
2) Sie wird mit dem Schlüsselwort static deklariert.
Sind alle Methoden eines Objektes seine Schnittstellen?
Nein
Sind Methoden einer Klasse meistens public oder private?
Private
Sind Attribute einer Klasse meist public oder private?
private
Ist ein Array ein Objekt oder eine Referenz auf ein Objekt?
In Java ist ein Array sowohl ein Objekt als auch eine Referenz auf ein Objekt.
Kann ein Array einige Elemente vom Datentyp int und einige Elemente vom Datentyp double enthalten?
Nein
Wie verändert man die Länge eines Arrays?
Kann nicht verandern.
Was wird ausgegeben bei System.out.println(array),
wenn array eine Referenz auf ein Array ist?
Speicheradresse oder der Hashcode des Arrays
Wie viele Dimensionen kann ein Array besitzen?
So viel wie du willst
Ist die Anzahl der Dimensionen bei der Definition eines Arrays (einer Referenz auf ein Array) immer festgelegt?
Ja
Können mehrdimensionale Arrays Elemente verschiedener elementarer DT enthalten?
Nein
Was ist die null-Konstante?
In Java ist null eine spezielle Konstante, die verwendet wird, um anzuzeigen, dass eine Referenzvariablen keinen Wert oder kein Objekt referenziert.
Was versteht man unter einer defensiven Methode?
Оборонительный метод завершается для всех допустимых входных данных нормально и вызывает исключение для недопустимых входных данных.
Ist length eine Instanzmethode oder eine Instanzvariable (Attribut) eines Arrays?
length ist eine Instanzvariable (Attribut) eines Arrays und keine Instanzmethode.
Wegen des erlaubten Zugriffs array.length ist length offenbar public. Kann man dann length verändern (etwa so: array.length = 3;? Begründen Sie die Antwort.
Nein, man kann length eines Arrays in Java nicht verändern. Der Grund dafür ist, dass length eine öffentliche, aber finale Instanzvariable ist. Das bedeutet, dass sie nach ihrer Initialisierung nicht mehr geändert werden kann.
Ist die Anzahl der Dimensionen bei der Definition eines Arrays (einer Referenz auf ein Array) immer festgelegt?
Ja
Kann man einer Array-Referenz die null-Konstante zuweisen?
Ja
Was sind Ausnahmen?
Dinge, bei denen man nicht garantieren kann, dass sie zur Laufzeit funktionieren – UNERWARTET.
Z.B. Verbindung zu einem Remote-Server herstellen → der Server läuft nicht
Was ist robust methode? (JAVA)
Eine Methode heißt robust, wenn sie für jede mögliche Eingabe eine wohldefinierte Ausgabe produziert und normal terminiert
Was ist defensiv Methode?
Eine Methode heißt defensiv, wenn sie für alle Eingaben des Definitionsbereichs normal terminiert (d.h. bricht nicht ab) und für alle anderen Eingaben eine Ausnahme (Exception) auslöst.
Mathematischer Berechnungsfehler (Exception)
ArithmeticException
Versuchter Zugriff auf einen nicht
vorhandenen Array-Index (Exception)
ArrayIndexOutOfBoundsException
Versuchter Zugriff auf einen nicht vorhandenen String-Indexversuchter Zugriff auf einen nicht vorhandenen String-Index (Exception)
StringIndexOutOfBoundsException
Versuchter Zugriff auf einen nicht vorhandenen Index versuchter Zugriff auf einen nicht vorhandenen Index (Exception)
IndexOutOfBoundsException
Versuchte Speicherung in ein Array eines
Elementes von inkompatiblem Datentyp (Exception)
ArrayStoreException
Versuchte Erzeugung eines Arrays negativer Länge (Exception)
NegativeArraySizeException
Versuchte Zuweisung von Objekten inkompatibler Datentypen (Exception)
ClassCastException
Einer Methode wird ein ungültiger
Parameter übergeben (Exception)
IllegalArgumentException
Eine (Instanz-)Methode wird zu einem
Zeitpunkt auf ein Objekt angewendet, zu
dem sich das Objekt in einem dafür
unerlaubten Zustand befindet (Exception)
IllegalStateException
Versuchter Zugriff auf eine (Instanz-)
Methode oder ein Attribut von einem null-
Objekt (Exception)
NullPointerException
Versuchter Zugriff auf eine Methode, die von der Klasse nicht unterstützt wird (Exception)
UnsupportedOperationException
Basis für die Fehlerkategorie, die
zur Laufzeit auftreten (Exception)
RuntimeException
Was ist der Unterschied zwischen Checked und Unchecked
Exceptions?
Checked Exceptions:
Checked Exceptions sind Ausnahmen, die vom Compiler überprüft werden. Dies bedeutet, dass der Compiler sicherstellt, dass sie entweder durch einen try-catch-Block behandelt oder in der Methodensignatur mit dem Schlüsselwort throws angekündigt werden.
Unchecked Exceptions sind Ausnahmen, die vom Compiler nicht überprüft werden. Dies bedeutet, dass der Compiler nicht erzwingt, dass sie behandelt oder angekündigt werden.
Was ist Exception Handler?
Ein Exception Handler ist ein Codeabschnitt in einem Programm, der darauf ausgelegt ist, Ausnahmen (Exceptions) zu fangen und zu behandeln, um den normalen Ablauf des Programms wiederherzustellen oder geeignete Maßnahmen zu ergreifen, wenn Fehler auftreten.
Was wird nach dem try-Block abgearbeitet, wenn gar keine catch-Klausel vorhanden ist?
In Java kann ein try-Block ohne eine catch-Klausel, aber mit einer finally-Klausel existieren. Wenn eine Ausnahme im try-Block auftritt und keine catch-Klausel vorhanden ist, wird die Ausnahme weiterhin ausgelöst und an die aufrufende Methode weitergegeben. Unabhängig davon, ob eine Ausnahme auftritt oder nicht, wird der finally-Block immer ausgeführt.
Was ist für das Anzeigen der möglicherweise auftretenden Fehler besser: spezielle Rückgabewerte (Bsp. -1 für Array-Index) oder Exceptions?
Exceptions ist besser