— Scott McNealy, Sun Microsystems Chairman, President and ceo


Two references, one object on the heap



Download 40,57 Mb.
Pdf ko'rish
bet518/555
Sana26.05.2022
Hajmi40,57 Mb.
#609235
1   ...   514   515   516   517   518   519   520   521   ...   555
Bog'liq
Head First Java (Kathy Sierra, Bert Bates) (z-lib.org)

Two references, one object on the heap.
Song
foo
title: Circles
hashCode: 254
Song
bar
$
Object
equality
 
Two references, two objects on the heap, but
the objects are considered 
meaningfully equivalent.
Song
Song
Two references that refer to the same object on 
the heap are equal. Period. If you call the hashCode() method on 
both references, you’ll get the same result. If you don’t override the 
hashCode() method, the default behavior (remember, you inherited 
this from class Object) is that each object will get a unique number 
(most versions of Java assign a hashcode based on the object’s 
memory address on the heap, so no two objects will have the same 
hashcode).
If you want to know if two references are really referring to the same 
object, use the == operator, which (remember) compares the bits in 
the variables. If both references point to the same object, the bits will 
be identical.
title: Circles
hashCode: 254
title: Circles
hashCode: 254
foo
bar
If you want to treat two different Song objects as equal (for 
example if you decided that two Songs are the same if they have 
matching title variables), you must override both the hashCode() 
and equals() methods inherited from class Object.
As we said above, if you don’t override hashCode(), the default 
behavior (from Object) is to give each object a unique hashcode 
value. So you must override hashCode() to be sure that two 
equivalent objects return the same hashcode. But you must also 
override equals() so that if you call it on either object, passing in 
the other object, always returns 
true.
If two objects 
foo and bar are 
equal,
foo.equals(bar) must be 
true, and both foo and bar must 
return the same value from 
hashCode(). For a Set to treat 
two objects as duplicates, you 
must override the hashCode() 
and equals() methods inherited 
from class Object, so that you 
can make two different objects 
be viewed as equal.
if (foo == bar) { 
// both references are referring 
// to the same object on the heap
}
if (foo.equals(bar) && foo.hashCode() == bar.hashCode()) { 
// both references are referring to either a
// a single object, or to two objects that are equal
}

Download 40,57 Mb.

Do'stlaringiz bilan baham:
1   ...   514   515   516   517   518   519   520   521   ...   555




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish