Object 是所有類的基類褥蚯,很重要挚冤。
1.
這是第一個(gè)方法,用static 赞庶,native修飾训挡,意思是一個(gè)本地方法,具體是用C(C++)在DLL中實(shí)現(xiàn)的澜薄,然后通過JNI調(diào)用,然后使用static 靜態(tài)代碼塊誊锭,在對(duì)象初始化時(shí)自動(dòng)調(diào)用該方法表悬。
2.
返回運(yùn)行時(shí)的類,意思就是說類對(duì)象的運(yùn)行時(shí)類的Class對(duì)象丧靡◇∧可以看到這個(gè)方法使用final 修飾,所以他不能被子類覆蓋温治。當(dāng)你這樣寫:super.getClass().getName()的時(shí)候并不會(huì)返回他老爸的類饭庞,只會(huì)返回運(yùn)行時(shí)的類
3.
返回hashCode。博主在看源碼的時(shí)候才發(fā)現(xiàn)其實(shí)hashCode返回的是一個(gè)int 類型熬荆,博主一直以為是一個(gè)String類型舟山,hashCode 一個(gè)用途是在equals()比較的時(shí)候,當(dāng)兩個(gè)對(duì)象 equals()為True 那么這兩個(gè)類的hashCode 值一定相同,但是當(dāng)兩個(gè)hashCode 值相同的時(shí)候累盗,equals()卻不一定為true寒矿,所以有時(shí)候如果需要循環(huán)equals比較的時(shí)候,其實(shí)可以先取hashCode 比較一下如果hashCode都不一樣那么equals ()一定不一樣若债,沒必要往下走符相,這樣可以提高效率,因?yàn)閔ashCode 的執(zhí)行效率要比equals 要高蠢琳。
4.
判斷兩個(gè)object是否相等主要有如下四個(gè)特性(對(duì)于任何非空引用值 x 和 y):自反性:x.equals(x) = true啊终。對(duì)稱性:y.equals(x) = true 時(shí),x.equals(y) = true傲须,傳遞性:如果 x.equals(y) =true,y.equals(z)=true, 那么?x.equals(z) =true,一致性:當(dāng)比較的東西沒有被修改時(shí)蓝牲,多次調(diào)用 x.equals(y) 始終返回 true 或始終返回 false.
5.
clone方法,首先他有一個(gè)CloneNotSupportedException異常泰讽,所有被克隆的類一定要實(shí)現(xiàn)Cloneable 接口否則會(huì)拋出這個(gè)異常例衍,Cloneable沒有具體實(shí)現(xiàn),要想實(shí)現(xiàn)必須自己手動(dòng)實(shí)現(xiàn) 已卸。當(dāng)然數(shù)組類型默認(rèn)都是實(shí)現(xiàn)的(這里的克隆其實(shí)是淺拷貝肄渗,不是深拷貝)。還有一點(diǎn)他是protected 類型咬最,也就是說在一個(gè)包中和public是一樣的翎嫡,但是在包外使用要注意。
6.
tostring()永乌,默認(rèn)返回的是對(duì)象的字符串表達(dá)形式也就是(對(duì)象名和hashcod碼)惑申,一般情況下都是會(huì)去重寫它的。
7.
這里我們把notify()翅雏、notifyAll()圈驼、wait() 放一起講,首先wait()方法就是說將該對(duì)象的控制權(quán)握在自己手里望几,一直處于等待狀態(tài)绩脆,直到被notify()或者notifyAll()喚醒,這幾個(gè)方法主要為線程同步而準(zhǔn)備的橄抹。notify()如果被調(diào)用靴迫,就會(huì)喚醒別的線程(隨隨機(jī)一個(gè))去繼續(xù)運(yùn)行該對(duì)象,notifyAll()如果被調(diào)用楼誓,所有等待該對(duì)象的控制器線程繼續(xù)運(yùn)行玉锌。
8.
finalize(),可以理解為在GC垃圾回收的時(shí)候執(zhí)行該方法疟羹。
PS:哪里不對(duì)可以在評(píng)論中指出主守,我都會(huì)一個(gè)個(gè)看的禀倔,覺得少東西也可以評(píng)論中提出來,我會(huì)做補(bǔ)充参淫。