-
Klassenmethoden auflisten
Object
equals()
hashCode()
toString()
getClass()
notify()
notifyAll()
wait()
wait(long timeOut)
wait(long timeOut, int nanos)
-
equals
Warum werden & Methoden benötigthashCode
?Wird zum Vergleichen von Objekten verwendet.
Der Zweck der Methode
equals
besteht darin, durch Vergleich der internen Inhalte der Objekte festzustellen, ob Objekte intern identisch sind. Diesequals
funktioniert langsam, zunächst werden die Hash-Codes der Objekte verglichen, und wenn die Hash-Codes gleich sind, wird eine Prüfung durchgeführtequals
-
Was passiert, wenn Sie „equals“ überschreiben, aber nicht überschreiben
hashCode
?Zunächst
hashCode
eine Zufallszahl.equals
Sammlungen in Java suchen/vergleichen sie immer mit der Methode, bevor sie Objekte mit vergleichenhashCode()
. Und wenn identische Objekte unterschiedliche habenhashCode
, werden die Objekte als unterschiedlich betrachtet – es ist einfach nicht möglich, sie zu vergleichenequals
. -
Warum sind die Methoden
wait
,notify
,notifyAll
?Manchmal kann es bei einem Programm zu einer Situation kommen, in der ein Thread in einen Codeblock eingetreten ist
synchronized
, den Monitor blockiert hat und nicht weiterarbeiten kann, weil Es fehlen noch einige Daten: Beispielsweise wurde die Datei, die verarbeitet werden soll, noch nicht geladen oder ähnliches. Zur Lösung dieses Problems wurde eine Methode erfundenwait()
. Der Aufruf dieser Methode bewirkt, dass der Thread den Monitor freigibt und „pausiert“.Um die Pause aufzuheben, werden Methoden verwendet
notify
.notifyAll
Die Methodenotify
„taut“ einen zufälligen Thread auf, die MethodenotifyAll
– alle „eingefrorenen“ Threads eines bestimmten Monitors. -
Wie klont man ein Objekt richtig?
Zwei Arten des Klonens.
So klonen Sie ein Standardobjekt:
Cloneable
Fügen Sie Ihrer Klasse eine Schnittstelle hinzu- Überschreiben Sie die Methode
clone
und rufen Sie die Basisimplementierung darin auf:
class Point implements Cloneable { int x; int y; public Object clone() { return super.clone(); } }
Oder Sie schreiben die Implementierung der Methode
clone
selbst:class Point { int x; int y; public Object clone() { Point point = new Point(); point.x = this.x; point.y = this.y; return point; } }
-
Warum wird die Methode benötigt
finalize()
und wie funktioniert sie?Wie Sie sich erinnern,
finalize()
ist dies eine spezielle Methode, die für ein Objekt aufgerufen wird, bevor der Garbage Collector es zerstört.Der Hauptzweck dieser Methode besteht darin, verwendete externe Nicht-Java-Ressourcen freizugeben: Dateien schließen, E/A-Streams usw.
finalize()
Funktioniert instabil.Diese Methode wird den in sie gesetzten Erwartungen nicht gerecht. Die Java-Maschine kann die Zerstörung eines Objekts sowie den Aufruf einer Methode
finalize
beliebig lange verzögern. Darüber hinaus kann nicht garantiert werden, dass diese Methode überhaupt aufgerufen wird. In vielen Situationen wird aus Gründen der „Optimierung“ nicht aufgerufen. -
Was ist der Unterschied
final
,finally
,finalize
?final
- Modifikator- Felder können nicht geändert werden, Methoden werden überschrieben
- Klassen können nicht vererbt werden
- Dieser Modifikator gilt nur für Klassen, Methoden und Variablen (auch lokale Variablen).
final
Als schreibgeschützt markierte Methodenargumente ; der Versuch, sie zu ändern, führt zu einem Kompilierungsfehler.- Переменные
final
не инициализируются по умолчанию, им необходимо явно присвоить Bedeutung при объявлении oder в конструкторе, иначе – ошибка компиляции - Если final переменная содержит ссылку на ein Objekt, ein Objekt может быть изменен, но переменная всегда будет ссылаться на тот же самый ein Objekt
- Также это справедливо и для массивов, потому что массивы являются ein Objektами, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
- Если класс объявлен
final
иabstract
(взаимоисключающие понятия), произойдет ошибка компиляции - Так Wie
final
класс не может наследоваться, его методы никогда не могут быть переопределены
finally
— блок в связкеtry-catch-finally
, Code в котором выполнится независимо от того вылетело ли исключение в блокеtry
oder нет. Используется для освобождения ресурсов.finalize
— метод в классеObject
см 6. -
Was такое
try-with-resources
?Это специальная конструкция
try
, называемаяtry-with-resources
, в которой Обрати внимание – послеtry
следуют круглые скобки, где объявляются переменные и создаются ein Objektы. Эти ein Objektы можно использовать внутри блокаtry
, обозначенного скобками{}
. Когда выполнение команд блокаtry
закончится, независимо от того – нормально оно закончилось oder было исключение, для ein Objektа, созданного внутри круглых скобок()
, будет вызван методclose()
; -
Чем отличаются методы
wait(1000)
иsleep(1000)
?sleep()
приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLEwait()
меняет состояние потока на WAITINGможет быть вызвано только у ein Objektа владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае
wait(int)
с аргументом состояние будет TIMED_WAITING -
В чем отличие
i++
и++i
?++i
,i
сначала увеличивается на 1, затем участвует в выражении.i++
,i
сначала участвует в выражении, затем увеличивается на 1.
GO TO FULL VERSION