產(chǎn)品詳情
到現(xiàn)在學(xué)習(xí)Java已經(jīng)快一個(gè)月了,從最開(kāi)始的盲目自信到現(xiàn)在明確認(rèn)識(shí)到自己的不足、了解Java的強(qiáng)大,整個(gè)人都變得成熟許多。授課老師非常認(rèn)真負(fù)責(zé),那感覺(jué)就像是打破腦袋也要把知識(shí)傳授給我們,同學(xué)之間相處融洽,學(xué)習(xí)氛圍超級(jí)棒!
在一階段的課程中,我們學(xué)習(xí)了很多知識(shí)點(diǎn),包括Java基本語(yǔ)法、面向?qū)ο蟆⒗^承、多態(tài)等。以下是我整理出的自認(rèn)為比較難理解的知識(shí)點(diǎn):“==”和equals 。
“==”:該操作符生成的是一個(gè)boolean結(jié)果,它計(jì)算的是操作數(shù)的值之間的關(guān)系。
在Java中有八種基本數(shù)據(jù)類(lèi)型,整型數(shù)據(jù):byte、short、int、long;浮點(diǎn)型:float、double;字符型:char;布爾型:boolean。對(duì)于這八種基本數(shù)據(jù)類(lèi)型的變量,變量直接存儲(chǔ)的是“值”。因此,在使用關(guān)系操作符“ == ”來(lái)進(jìn)行比較時(shí),比較的就是“值”本身。
在Java中,引用類(lèi)型的變量存儲(chǔ)的并不是“值”本身,而是與其關(guān)聯(lián)的對(duì)象在內(nèi)存中的地址。因此,對(duì)于關(guān)系操作符“==”:若操作數(shù)的類(lèi)型是基本數(shù)據(jù)類(lèi)型,則該關(guān)系操作符判斷的是左右兩邊操作數(shù)的值是否相等;若操作數(shù)的類(lèi)型是引用數(shù)據(jù)類(lèi)型,則該關(guān)系操作符判斷的是左右兩邊操作數(shù)的內(nèi)存地址是否相同。也就是說(shuō),若此時(shí)返回true,則該操作符作用的一定是同一個(gè)對(duì)象。
equals :是Object 的實(shí)例方法,比較兩個(gè)對(duì)象的content是否相同。
equals的初衷是判斷兩個(gè)對(duì)象的content是否相同;在Object類(lèi)中,equals方法是用來(lái)比較兩個(gè)對(duì)象的引用是否相等,即是否指向同一個(gè)對(duì)象。使用equals方法,內(nèi)部實(shí)現(xiàn)分為三個(gè)步驟:首先比較引用是否相同(是否為同一對(duì)象);然后判斷類(lèi)型是否一致(是否為同一類(lèi)型);最后比較內(nèi)容是否一致。Java中所有內(nèi)置的類(lèi)的equals方法的實(shí)現(xiàn)步驟均是如此,特別是諸如 Integer、Double 等包裝器類(lèi)。
對(duì)象內(nèi)容的比較是設(shè)計(jì)equals()的真正目的,equals 重寫(xiě)原則包括對(duì)稱(chēng)性、自反性、類(lèi)推性、一致性等。
在千鋒學(xué)習(xí)Java的每一天我都過(guò)的很充實(shí),尤其是知識(shí)都裝在自己腦子里的時(shí)候特別的滿足。五個(gè)月的課程說(shuō)短不短,說(shuō)長(zhǎng)不長(zhǎng),但我相信這會(huì)是我們走上程序員之路的好開(kāi)端,打好基礎(chǔ),有一個(gè)好起點(diǎn),未來(lái)我們才能走得更遠(yuǎn)、更高。