-
Daftar metode kelas
Object
equals()
hashCode()
toString()
getClass()
notify()
notifyAll()
wait()
wait(long timeOut)
wait(long timeOut, int nanos)
-
equals
Mengapa & metode diperlukanhashCode
?Digunakan untuk membandingkan objek.
Tujuan dari metode ini
equals
adalah untuk menentukan apakah objek-objek tersebut identik secara internal dengan membandingkan isi internal objek-objek tersebut. Iniequals
bekerja lambat, pertama-tama kode hash dari objek dibandingkan, dan jika kode hash sama, pemeriksaan dilakukanequals
-
Apa yang terjadi jika Anda mengganti yang sama tetapi tidak menggantinya
hashCode
?Awalnya
hashCode
, nomor acak.equals
Koleksi di Java selalu mencari/membandingkannya menggunakan metode sebelum membandingkan objek menggunakanhashCode()
. Dan jika objek yang identik memiliki objek yang berbedahashCode
, maka objek tersebut akan dianggap berbeda - tidak mungkin membandingkannya dengan menggunakan objek tersebutequals
. -
Mengapa metodenya
wait
,notify
,notifyAll
?Kadang-kadang dalam suatu program mungkin ada situasi di mana utas telah memasukkan blok kode
synchronized
, memblokir monitor dan tidak dapat bekerja lebih jauh, karena beberapa data masih hilang: misalnya file yang seharusnya diproses belum dimuat atau semacamnya. Sebuah metode diciptakan untuk memecahkan masalah iniwait()
. Memanggil metode ini menyebabkan thread melepaskan monitor dan "jeda".Untuk membatalkan jeda, metode digunakan
notify
.notifyAll
Metode ininotify
“mencairkan” satu thread acak, metode ininotifyAll
– semua thread “membekukan” monitor tertentu. -
Bagaimana cara mengkloning suatu objek dengan benar?
Dua jenis kloning.
Untuk mengkloning objek default:
- Tambahkan antarmuka
Cloneable
ke kelas Anda - Ganti metode
clone
dan panggil implementasi dasar di dalamnya:
class Point implements Cloneable { int x; int y; public Object clone() { return super.clone(); } }
clone
Atau Anda dapat menulis sendiri penerapan metode ini :class Point { int x; int y; public Object clone() { Point point = new Point(); point.x = this.x; point.y = this.y; return point; } }
- Tambahkan antarmuka
-
Mengapa metode tersebut diperlukan
finalize()
dan bagaimana cara kerjanya?Jika Anda ingat, ini
finalize()
adalah metode khusus yang dipanggil pada suatu objek sebelum pengumpul sampah menghancurkannya.Tujuan utama dari metode ini adalah untuk melepaskan sumber daya eksternal non-Java yang terpakai: menutup file, aliran I/O, dll.
finalize()
bekerja tidak stabil.Metode ini tidak memenuhi harapan yang diberikan. Mesin Java dapat menunda penghancuran suatu objek, serta pemanggilan suatu metode,
finalize
selama yang diinginkan. Selain itu, tidak ada jaminan bahwa metode ini akan dipanggil sama sekali. Dalam banyak situasi, demi “optimasi” hal ini tidak disebut. -
Apa bedanya
final
,finally
,finalize
?final
- pengubah- Bidang tidak dapat diubah, metode akan diganti
- Kelas tidak dapat diwariskan
- Pengubah ini hanya berlaku untuk kelas, metode dan variabel (juga variabel lokal)
- Argumen metode yang ditandai sebagai
final
hanya dapat dibaca; mencoba mengubahnya akan mengakibatkan kesalahan kompilasi. - Переменные
final
не инициализируются по умолчанию, им необходимо явно присвоить meaning при объявлении or в конструкторе, иначе – ошибка компиляции - Если final переменная содержит ссылку на an object, an object может быть изменен, но переменная всегда будет ссылаться на тот же самый an object
- Также это справедливо и для массивов, потому что массивы являются an objectми, – массив может быть изменен, а переменная всегда будет ссылаться на тот же самый массив
- Если класс объявлен
final
иabstract
(взаимоисключающие понятия), произойдет ошибка компиляции - Так How
final
класс не может наследоваться, его методы никогда не могут быть переопределены
finally
— блок в связкеtry-catch-finally
, code в котором выполнится независимо от того вылетело ли исключение в блокеtry
or нет. Используется для освобождения ресурсов.finalize
— метод в классеObject
см 6. -
What такое
try-with-resources
?Это специальная конструкция
try
, называемаяtry-with-resources
, в которой Обрати внимание – послеtry
следуют круглые скобки, где объявляются переменные и создаются an objectы. Эти an objectы можно использовать внутри блокаtry
, обозначенного скобками{}
. Когда выполнение команд блокаtry
закончится, независимо от того – нормально оно закончилось or было исключение, для an object, созданного внутри круглых скобок()
, будет вызван методclose()
; -
Чем отличаются методы
wait(1000)
иsleep(1000)
?sleep()
приостанавливает поток на указанное. состояние меняется на TIMED_WAITING, по истечению — RUNNABLEwait()
меняет состояние потока на WAITINGможет быть вызвано только у an object владеющего блокировкой, в противном случае выкинется исключение IllegalMonitorStateException. при срабатывании метода блокировка отпускается, что позволяет продолжить работу другим потокам ожидающим захватить ту же самую блокировку . в случае
wait(int)
с аргументом состояние будет TIMED_WAITING -
В чем отличие
i++
и++i
?++i
,i
сначала увеличивается на 1, затем участвует в выражении.i++
,i
сначала участвует в выражении, затем увеличивается на 1.
GO TO FULL VERSION