更新時間:2020-05-11 16:36:42 來源:動力節(jié)點 瀏覽4229次
Java object類作用及object類有哪些,Object類存儲在java.lang包中,是所有java類(Object類除外)的終極父類。當然,數(shù)組也繼承了Object類。然而,接口是不繼承Object類的,原因在這里指出:Section9.6.3.4oftheJavaLanguageSpecification:“Object類不作為接口的父類”。
Java的任何類都繼承了這些函數(shù),并且可以覆蓋不被final修飾的函數(shù)。例如,沒有final修飾的toString()函數(shù)可以被覆蓋,但是finalwait()函數(shù)就不行。
因為編譯器會自動引入java.lang包中的類型,即importjava.lang.Object;沒必要聲明出來。Java也沒有強制聲明“繼承Object類”。如果這樣的話,就不能繼承除Object類之外別的類了,因為java不支持多繼承。然而,即使不聲明出來,也會默認繼承了Object類。
1.clone方法
保護方法,實現(xiàn)對象的淺復制,只有實現(xiàn)了Cloneable接口才可以調(diào)用該方法,否則拋出CloneNotSupportedException異常。
淺克隆(也叫做淺拷貝)僅僅復制了這個對象本身的成員變量,該對象如果引用了其他對象的話,也不對其復制。
Object的clone()方法、深拷貝、淺拷貝
查看Object源碼中clone()方法的實現(xiàn):
protectednativeObjectclone()throwsCloneNotSupportedException;
clone()方法的訪問權(quán)限是protected,因為你的例程不是在java.lang包中,protected類型只能在本包和子類中訪問。
native關(guān)鍵字
簡單地講,一個nativemethod就是一個java調(diào)用非java代碼的接口。
說明其修飾的方法是一個原生方法,方法對應(yīng)的實現(xiàn)不是在當前文件,而是在用其他語言(如C和C++)實現(xiàn)的文件中。
Java語言本身不能對操作系統(tǒng)底層進行訪問和操作,但是可以通過JNI接口調(diào)用其他語言來實現(xiàn)對底層的訪問。
2.getClass方法
final方法,獲得運行時類型。
3.toString方法
該方法用得比較多,一般子類都有覆蓋。
4.finalize方法
該方法用于釋放資源。因為無法確定該方法什么時候被調(diào)用,很少使用。
Java允許在類中定義一個名為finalize()的方法。它的工作原理是:一旦垃圾回收器準備好釋放對象占用的存儲空間,將首先調(diào)用其finalize()方法。并且在下一次垃圾回收動作發(fā)生時,才會真正回收對象占用的內(nèi)存。
5.equals方法
該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。
publicbooleanequals(Objectvar1){
returnthis==var1;
}
equals()方法和==運算符比較
equals()方法可以用來檢查一個對象與調(diào)用這個equals()的這個對象是否相等。
雖然“==”運算符可以比較兩個數(shù)據(jù)是否相等,但是要來比較對象的話,恐怕達不到預期的結(jié)果。
就是說,“==”通過是否引用了同一個對象來判斷兩個對象是否相等,這被稱為“引用相等”。這個運算符不能通過比較兩個對象的內(nèi)容來判斷它們是不是邏輯上的相等。
6.hashCode方法
該方法用于哈希查找,可以減少在查找中使用equals的次數(shù),重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有哈希功能的Collection中用到。
一般必須滿足obj1.equals(obj2)==true,可以推出obj1.hashCode()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應(yīng)該盡量使上面兩個條件接近等價。
如果不重寫hashcode(),在HashSet中添加兩個equals的對象(因為對象地址不一樣,會認為是2個不同的對象),會將兩個對象都加入進去。
7.wait方法
wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(longtimeout)設(shè)定一個超時間隔,如果在規(guī)定時間內(nèi)沒有獲得鎖就返回。
調(diào)用該方法后當前線程進入睡眠狀態(tài),直到以下事件發(fā)生。
其他線程調(diào)用了該對象(Object)的notify方法。
其他線程調(diào)用了該對象(Object)的notifyAll方法。
其他線程調(diào)用了interrupt中斷該線程。
時間間隔到了。
此時該線程就可以被調(diào)度了,如果是被中斷的話就拋出一個InterruptedException異常。
8.notify方法
該方法喚醒在該對象(Object)上等待的某個線程。
9.notifyAll方法
該方法喚醒在該對象上等待的所有線程。
以上就是動力節(jié)點java培訓機構(gòu)的小編針對“Java架構(gòu)師全套體系視頻,微服務(wù)架構(gòu)”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。