黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java父類Object的終極理解

Java父類Object的終極理解

更新時間:2020-07-28 16:29:29 來源:動力節(jié)點 瀏覽2611次

一、定義

(一)什么是object類

1.Object類存儲在java.lang包中,使用的時候無需顯示導入,編譯時由編譯器自動導入。是所有java類(Object類除外)的終極父類(包括標準容器類,比如數(shù)組),不過接口不繼承Object類。

2.可以使用類型為Object的變量指向任意類型的對象。Object類的變量只能用作各種值的通用持有者,要對他們進行任何專門的操作,都需要知道它們的原始類型并進行類型轉換。

3.包含的函數(shù):

1)public Object();

2)protected Object clone()

3)boolean equals(Object obj)

4)protected void finalize()

5)Class<>getClass()

6)int hashCode()

7)void notify()

8)void notifyAll()

9)String toString()

10)void wait()

11)void wait(long timeout)

12)void wait(long timeout,int nanos)

二、用法

(一)常用函數(shù)解析

1.Object():默認構造方法。

1)Java中規(guī)定:在類定義過程中,對于未定義構造函數(shù)的類,默認會有一個無參數(shù)的構造函數(shù),作為所有類的基類,Object類自然要反映出此特性,在源碼中,未給出Object類構造函數(shù)定義,但實際上,此構造函數(shù)是存在的。當然,并不是所有的類都是通過此種方式去構建,也自然的,并不是所有的類構造函數(shù)都是public。

2.Clone():創(chuàng)建并返回此對象的一個副本。

1)clone()方法又是一個被聲明為native的方法,因此,我們知道了clone()方法并不是Java的原生方法,具體的實現(xiàn)是有C/C++完成的。clone英文翻譯為"克隆",其目的是創(chuàng)建并返回此對象的一個副本。clone函數(shù)返回的是一個引用,指向的是新的clone出來的對象,此對象與原對象分別占用不同的堆空間。

2)當代碼執(zhí)行的時候,將會檢查調用對象的類(或者父類)是否實現(xiàn)了java.lang.Cloneable接口(Object類不實現(xiàn)Cloneable)。如果沒有實現(xiàn)這個接口,clone()將會拋出一個檢查異常()——java.lang.CloneNotSupportedException,如果實現(xiàn)了這個接口,clone()會創(chuàng)建一個新的對象,并將原來對象的內容復制到新對象,最后返回這個新對象的引用。

3)淺克隆(也叫做淺拷貝)僅僅復制了這個對象本身的成員變量,該對象如果引用了其他對象的話,也不對其復制僅僅復制其引用(當被復制的對象的引用類型變量內容發(fā)生變化時候,被復制的對象也會跟著變化)。

3.finalize():當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。

1)首先,Object中定義finalize方法表明Java中每一個對象都將具有finalize這種行為,其具體調用時機在:JVM準備對此對形象所占用的內存空間進行垃圾回收前,將被調用。由此可以看出,此方法并不是由我們主動去調用的(雖然可以主動去調用,此時與其他自定義方法無異)。

4.equals()與hashCode():指示某個其他對象是否與此對象“相等”;返回該對象的哈希碼值。

1)重寫equals()方法必須重寫hashCode()方法。因為當僅僅重寫equals()方法改變了判斷對象相等條件,但是很多引用類型(例如hashMap等)判斷相等是通過hashCode()方法判斷key值是否相等,所以會導致意想的equals()要相等,但是hashCode()依舊是之前的邏輯導致不相等。

2)對象相等óequals()相等=>hashCode()相等;根據(jù)逆反定理:hashCode()不相等=>equals()不相等ó對象不相等

3)hashCode()相同的兩個對象不一定相等,換而言之不相等的兩個對象其hashCode()值可能相同。

5.getClass():返回一個對象的運行時類。

1)首先解釋下"類對象"的概念:在Java中,類是對具有一組相同特征或行為的實例的抽象并進行描述,對象則是此類所描述的特征或行為的具體實例。作為概念層次的類,其本身也具有某些共同的特性,如都具有類名稱、由類加載器去加載,都具有包,具有父類,屬性和方法等。于是,Java中有專門定義了一個類,Class,去描述其他類所具有的這些特性,因此,從此角度去看,類本身也都是屬于Class類的對象。為與經常意義上的對象相區(qū)分,在此稱之為"類對象"。

6.toString:返回該對象的字符串表示。

1)在Object類中,它用于返回對象所屬類名和散列碼。

2)絕大多數(shù)的toString方法都遵循這個格式:類名[域值,域值,域值......]。

7.notify()、notifyAll():喚醒在此對象監(jiān)視器上等待的單個/所有線程。

1)調用后,其所在線程不會立即釋放所持有的鎖,直到其所在同步代碼塊中的代碼執(zhí)行完畢,此時釋放鎖,因此,如果其同步代碼塊后還有代碼,其執(zhí)行則依賴于JVM的線程調度。

8.wait()、wait(long timeout)、wait(long timeout,int nanos):導致當前的線程等待,直到其他線程調用此對象的notify()方法或notifyAll()方法、或者已超過某個實際時間量,、或者其他某個線程中斷當前線程。

1)調用后當前線程將立即阻塞,且釋放其所持有的同步代碼塊中的鎖,直到被喚醒或超時或打斷后且重新獲取到鎖后才能繼續(xù)執(zhí)行。

三、總結

1.既然比較兩個對象是否相等的唯一條件(也是沖要條件)是equals,那么為什么還要弄出一個hashCode(),并且進行如此約定,弄得這么麻煩?

1)其實,這主要體現(xiàn)在hashCode()方法的作用上,其主要用于增強哈希表的性能。

2)以集合類中,以Set為例,當新加一個對象時,需要判斷現(xiàn)有集合中是否已經存在與此對象相等的對象,如果沒有hashCode()方法,需要將Set進行一次遍歷,并逐一用equals()方法判斷兩個對象是否相等,此種算法時間復雜度為o(n)。通過借助于hasCode方法,先計算出即將新加入對象的哈希碼,然后根據(jù)哈希算法計算出此對象的位置,直接判斷此位置上是否已有對象即可。(注:Set的底層用的是Map的原理實現(xiàn))

2.在程序執(zhí)行期間,只要equals方法的比較操作用到的信息沒有被修改,那么對這同一個對象調用多次,hashCode方法必須始終如一地返回同一個整數(shù)。

1)設計hashCode()時最重要的因素就是:無論何時,對同一個對象調用hashCode()都應該產生同樣的值。如果在講一個對象用put()添加進HashMap時產生一個hashCdoe值,而用get()取出時卻產生了另一個hashCode值,那么就無法獲取該對象了。所以如果你的hashCode方法依賴于對象中易變的數(shù)據(jù),用戶就要當心了,因為此數(shù)據(jù)發(fā)生變化時,hashCode()方法就會生成一個不同的散列碼。

2)因此,在設計hashCode方法和equals方法的時候,如果對象中的數(shù)據(jù)易變,則最好在equals方法和hashCode方法中不要依賴于該字段。

3.大多數(shù)人認為hashCode返回的就是對象的存儲地址,事實上這種看法是不全面的,確實有些JVM在實現(xiàn)時是直接返回對象的存儲地址,但是大多時候并不是這樣,只能說可能存儲地址有一定關聯(lián)。

Java父類Object的終極理解

Java Object類技術文檔:http://www.ilovecolors.com.cn/tutorial_java_advance/606.html

以上就是動力節(jié)點java培訓機構的小編針對“Java父類Object的終極理解”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 日韩午夜视频在线观看 | 成人免费网站视频ww | 欧美精品免费在线 | 国产色视频网站免费观看 | 成人免费在线观看视频 | 成人涩涩屋福利视频 | a三级毛片 | 国产午夜精品久久理论片小说 | 丝袜足控免费网站xx视频 | 黄色一级视频在线观看 | 日本欧美一区二区免费视 | 欧美视| 可以在线看黄的网站 | 亚洲国产亚洲片在线观看播放 | 国产123区在线视频观看 | 99在线观看精品视频 | 精品国产免费一区二区三区 | 男人的午夜影院 | 国产一级高清视频在线 | 欧美激情一区二区三区在线播放 | 国产精品亚洲一区二区三区久久 | 二区三区在线观看 | 一级一级黄色片 | 亚洲免费高清视频 | 久草久在线 | 一级片a级片 | 免费国产不卡午夜福在线 | 人人爽人人爽人人片c | 黄色成人在线播放 | 一本大道香蕉高清久久 | 欧美成人第一页 | 久久精品免费观看视频 | 国产高清大尺度一区二区不卡 | 1717she精品国产真正免费 | 免费h无遮挡动漫在线看 | 成人在线午夜 | 影音先锋2020色资源网 | 久操视频网 | 91在线免费视频观看 | 幺女国产一级毛片 | 三级黄色视屏 |