Klausurfragen - Teil 2 Flashcards
(14 cards)
Was ist c?
float a = 2.345F;
Number b = a;
float c = (float) b;
Der Wert von c ist 2.345F.
Erklärung:
1. float a = 2.345F;
→ a ist eine Gleitkommazahl (float) mit dem Wert 2.345F.
2. Number b = a;
→ a wird als Number gespeichert (Autoboxing zu Float).
3. float c = (float) b;
→ Downcasting von Number zurück zu float.
Da b tatsächlich eine Float-Instanz ist, funktioniert das Casting problemlos, und c erhält den Wert 2.345F.
Welche Probleme gibt es und wie kann man es verhindern?
Lock lock = new Lock();
lock.lock();
someOerationA();
someOperationB();
lock.unlock();
- Deadlock: Falls lock.unlock(); nicht ausgeführt wird (z. B. Wegen einer Exception), bleibt der Lock bestehen und blockiert andere Threads
- Fehlendes try-finally: Falls someOperationA() oder someOperationB() eine Exception wirft, wird lock.unlock(); nie erreicht.
- Fehlendes Timeout: Falls der Lock nicht rechtzeitig freigegeben wird, könnten Threads dauerhaft blockiert bleiben.
Lösung zur Vermeidung von Problemen:
- Verwende try-finally, um sicherzustellen, dass der Lock immer freigegeben wird
- Falls ein Timeout benötigt wird, kann man tryLock() verwenden
Was ist der Unterschied zwischen statischer und dynamischer Typisierung?
- Statische Typisierung: Der Datentyp wird bereits bei der Deklaration festgelegt und kann sich nicht ändern.
- Dynamische Typisierung: Der Datentyp kann zur Laufzeit wechseln, ohne vorherige Festlegung.
Was ist der Unterschied zwischen prozeduraler und objektorientierter Programmierung?
- Prozedurale Programmierung: Fokus auf Anweisungen und Abläufe. Programme werden in Funktionen/Prozeduren unterteilt.
- Objektorientierte Programmierung (OOP): Fokus auf Objekte, die Daten (Attribute) und Methoden (Verhalten) enthalten. Konzepte wie Kapselung, Vererbung und Polymorphie spielen eine Rolle.
Welche grundlegenden Bestandteile hat eine Klasse (bzw. Objekt)
- Attribute (Datenfelder) -> Speichern den Zustand des Objekts.
- Methoden (Funktionen) -> Definieren das Verhalten des Objekts.
- Konstruktoren-> Initialisieren das Objekt beim Erstellen.
- Zugriffsmodifikatoren -> Regeln die Sichtbarkeit von Attributen/Methoden (private, public, protected).
- Vererbung (optional) -> Eine Klasse kann von einer anderen Klasse erben (extends).
Was ist der Unterschied zwischen einer Klasse und einem Objekt?
- Eine Klasse ist eine Schablone/Vorlage für Objekte (enthält Attribute und Methoden).
- Ein Objekt ist eine konkrete Instanz einer Klasse mit eigenen Werten.
Wozu dient das Schlüsselwort new?
Das Schlüsselwort new erzeugt ein neues Objekt der Klasse im Speicher.
Was ist ein Konstruktor?
- Eine spezielle Methode, die beim Erstellen eines Objekts aufgerufen wird.
- Kann Parameter enthalten, um das Objekt zu initialisieren.
Wozu dient das Schlüsselwort var und welche Typisierung liegt vor?
- var dient zur Typinferenz - Der Compiler leitet den Typ zur Kompilierzeit automatisch ab.
- Es handelt sich um statische Typisierung - Typ kann nicht verändert werden
Wozu dienen Zugriffsmodifikatoren bei den Bestandteilen eines Objektes?
Zugriffsmodifikatoren steuern die Sichtbarkeit und den Zugriff auf die Bestandteile eines Objekts (Attribute & Methoden).
Welche Zugriffsmodifikatoren gibt es?
- public
- protected
- package-private
- private
Was ist der Unterschied zwischen einer Wertevariable und einer Referenz-Variable?
- Wertevariable: Speichert direkt den Wert (z. B. int, float, char).
- Referenzvariable: Speichert eine Speicheradresse, die auf ein Objekt verweist
Die Datentypen in Java lassen sich in zwei große Gruppen einteilen.
Wie heißen diese?
Es gibt primitive Datentypen und Referenzdatentypen
Was unterscheidet == von der equals Methode?
- == -> Prüft, ob es dasselbe Objekt ist.
- equals() -> Prüft, ob die Inhalte gleich sind.