-
Synp usullaryny sanaň
Object
equals()
hashCode()
toString()
getClass()
notify()
notifyAll()
wait()
wait(long timeOut)
wait(long timeOut, int nanos)
-
equals
Näme üçin we usullar zerurhashCode
?Obýektleri deňeşdirmek üçin ulanylýar.
Usulyň maksady,
equals
obýektleriň içki mazmunyny deňeşdirip, obýektleriň içerki birmeňzeşdigini kesgitlemekdir. Buequals
haýal işleýär, ilki obýektleriň hash kodlary deňeşdirilýär we hash kodlary deň bolsa, garşy barlag geçirilýärequals
-
Deňdir, ýöne artykmaç ýazmasaň näme bolýar
hashCode
?Ilki bilen
hashCode
tötänleýin san.Java-daky kolleksiýalar, ulanylýan zatlary deňeşdirmezden ozal
equals
usuly ulanyp gözleýär / deňeşdirýärhashCode()
. Birmeňzeş obýektler başga bolsahashCode
, obýektler başgaça hasaplanar - olary ulanmagy deňeşdirmek mümkin bolmazequals
. -
Usullar näme üçin
wait
,,notify
?notifyAll
Käwagt programmada bir sapagyň kod blokyna giren
synchronized
, monitory bloklaýan we mundan beýläk işläp bilmeýän ýagdaýy bolup biler, sebäbi käbir maglumatlar henizem ýok: mysal üçin, işlemeli faýl entek ýüklenmedi ýa-da şuňa meňzeş bir zat. Bu meseläni çözmek üçin bir usul oýlanyp tapyldywait()
. Bu usula jaň etmek, sapagyň monitory goýbermegine we "arakesmesine" sebäp bolýar.Arakesme bermek üçin usullar ulanylýar
notify
.notifyAll
Usulnotify
bir tötänleýin sapagy “doňdurýar”, usulnotifyAll
- berlen monitoryň ähli “doňan” sapaklary. -
Bir obýekti nädip klonlamaly?
Klonirlemegiň iki görnüşi.
Bellenen obýekti klonlamak üçin:
Cloneable
Synpyňyza interfeýs goşuň- Usuly ýok ediň
clone
we ondaky esasy ýerine ýetiriş diýip atlandyryň:
class Point implements Cloneable { int x; int y; public Object clone() { return super.clone(); } }
Ora-da usulyň ýerine ýetirilişini
clone
özüňiz ýazyp bilersiňiz:class Point { int x; int y; public Object clone() { Point point = new Point(); point.x = this.x; point.y = this.y; return point; } }
-
Usul näme üçin zerur
finalize()
we ol nähili işleýär?.Adyňyzda bolsa,
finalize()
zibil ýygnaýjy ýok etmezden ozal bir obýekte çagyrylýan ýörite usul.Bu usulyň esasy maksady, Java däl daşarky ulanylýan çeşmeleri çykarmak: faýllary ýapmak, I / O akymlary we ş.m.
finalize()
durnuksyz işleýär.Bu usul, garaşylýan zatlara laýyk gelmeýär.
finalize
Java enjamy , islän wagty bir obýektiň ýok edilmegini, şeýle hem usulyň çagyryşyny gijikdirip biler . Mundan başga-da, bu usulyň asla çagyryljakdygyny kepillendirmeýär. Köp ýagdaýlarda “optimizasiýa” üçin çagyrylmaýar. -
Tapawudy näme
final
,,finally
?finalize
final
- üýtgediji- Meýdanlary üýtgedip bolmaýar, usullar ýok edilýär
- Sapaklary miras alyp bolmaýar
- Bu üýtgediji diňe synplara, usullara we üýtgeýänlere degişlidir (ýerli üýtgeýänlerem)
- Diňe okalýan ýaly bellenilen usul argumentleri
final
, olary üýtgetmäge synanyşmak düzme ýalňyşlygyna sebäp bolar. - Переменные
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