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