1. 2020-09-10:java里Object類有哪些方法
Java Object類是所有類的父類,主要方法有:
getClass():獲取運行時類型,返回值為Class對象
2.hashCode():返回該對象的哈希碼值,是為了提高哈希表的性能(HashTable)
3.equals():判斷兩個對象是否相等,在Object源碼中equals就是使用==去判斷,所以在Object中equals是等價於==的,但是在String及某些類對equals進行了重寫,實現不同的比較。
4.clone():JAVA里除了8種基本類型傳參數是值傳遞,其他的類對象傳參數都是引用傳遞,我們有時候不希望在方法里講參數改變,這是就需要在類中復寫clone方法。此方法只實現了一個淺層拷貝,對於基本類型欄位成功拷貝,對嵌套對象,只把地址拷貝了,需要自己重寫clone方法進行深度拷貝。
5.toString():返回一個String字元串,用於描述當前對象的信息,可以重寫返回對自己有用的信息,默認返回的是當前對象的類名+hashCode的16進制數字。
6.wait():多線程時用到的方法,作用是讓當前線程進入等待狀態,同時也會讓當前線程釋放它所持有的鎖。直到其他線程調用此對象的 notify() 方法或 notifyAll() 方法,當前線程被喚醒
7.notify():多線程時用到的方法,喚醒該對象等待的某個線程
8.notifyAll():多線程時用到的方法,喚醒該對象等待的所有線程
9.finalize():對象在被GC釋放之前調用finalize方法。
你明白了嗎?
2. java object 有哪些方法
Java.lang.object類中有幾個方法不是final的,我們會經常用重寫它們,
protected Object clone() 創建並返回此對象的一個副本。
boolean equals(Object obj) 指示某個其他對象是否與此對象「相等」。
protected void finalize() 當垃圾回收器確定不存在對該對象的更多引用時,由對象的垃圾回收器調用此方法。
int hashCode() 返回該對象的哈希碼值。
String toString() 返回該對象的字元串表示。
1、clone()
我們為什麼要用clone()?
當我們需要一個與某個對像時一模一樣的對像時,但它們又是相互獨立的,對它們各自的操作不會影響到另外的一個,這時候用clone()就可以
實現,當然,其他的方法也可以實現,但是重寫clone()簡單,高效
有一個不沒重寫clone()的例子,能幫助我們更好的去理解clone(),如下:
public class Test
{
public static void main(String[] args){
A a1=new A();
A a2=new A();
a1.name="a1";
a2=a1;
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
}
}
class A
{
public String name;
}
輸出結果為:a1.name=a2;
a2.name=a2;
下面這個是重寫了clone()的例子
public class Test
{
public static void main(String[] args) throws CloneNotSupportedException {
A a1=new A();
A a2=new A();
a1.name="a1";
a2=(A) a1.clone();
a2.name="a2";
System.out.println("a1.name="+a1.name);
System.out.println("a2.name="+a2.name);
}
3. python object 有哪些方法
調用這個方法將返回包含obj大多數屬性名的列表(會有一些特殊的屬性不包含在內)。obj的默認值是當前的模塊對象。
hasattr(obj, attr):
這個方法用於檢查obj是否有一個名為attr的值的屬性,返回一個布爾值。
getattr(obj, attr):
調用這個方法將返回obj中名為attr值的屬性的值,例如如果attr為』bar』,則返回obj.bar。
setattr(obj, attr, val):
調用這個方法將給obj的名為attr的值的屬性賦值為val。例如如果attr為』bar』,則相當於obj.bar = val。
4. object類方法
Object類有12個成員方法,按照用途可以分為以下幾種
1,構造函數
2,hashCode和equale函數用來判斷對象是否相同,
3,wait(),wait(long),wait(long,int),notify(),notifyAll()
4,toString()和getClass,
5,clone()
6,finalize()用於在垃圾回收
函數說明
clone()
clone()函數的用途是用來另存一個當前存在的對象。
hashCode()和equale()
equale()用於確認兩個對象是否相同。
hashCode()用於獲取對象的哈希值,這個值的作用是檢索,具體的作用可以參考這里
哈希值相同的對象不一定equale()
equale()返回true的兩個對象一定相同。
toString()和getClass()
toString()返回一個String對象,用來標識自己
getClass()返回一個Class對象,如果列印出來會發現結果是如下格式
class package.name.xxx
1
因為返回的是一個class對象,後面可以跟class類的方法。用的是誰的構造函數,那麼getClass返回的就是誰的類型。
getClass()經常用於java反射機制
wait(),wait(long),wait(long,int),notify(),notifyAll()
這幾個函數體現的是Java的多線程機制
在使用的時候要求在synchronize語句中使用
wait()用於讓當前線程失去操作許可權,當前線程進入等待序列
notify()用於隨機通知一個持有對象的鎖的線程獲取操作許可權
notifyAll()用於通知所有持有對象的鎖的線程獲取操作許可權
wait(long) 和wait(long,int)用於設定下一次獲取鎖的距離當前釋放鎖的時間間隔
finalize()
這個函數在進行垃圾回收的時候會用到,匿名對象回收之前會調用到,具體的例子如圖所示
5. java中object類中有哪些方法
java語言中Object是所有類的父類,任何類都默認繼承Object。Object類到底實現了哪些方法?
(1)clone方法
保護方法,實現對象的淺復制,只有實現了Cloneable介面才可以調用該方法,否則拋出CloneNotSupportedException異常。
(2)getClass方法
final方法,獲得運行時類型。
(3)toString方法
該方法用得比較多,一般子類都有覆蓋。
(4)finalize方法
該方法用於釋放資源。因為無法確定該方法什麼時候被調用,很少使用。
(5)equals方法
該方法是非常重要的一個方法。一般equals和==是不一樣的,但是在Object中兩者是一樣的。子類一般都要重寫這個方法。
(6)hashCode方法
該方法用於哈希查找,重寫了equals方法一般都要重寫hashCode方法。這個方法在一些具有哈希功能的Collection中用到。
一般必須滿足obj1.equals(obj2)==true。可以推出obj1.hash- Code()==obj2.hashCode(),但是hashCode相等不一定就滿足equals。不過為了提高效率,應該盡量使上面兩個條件接近等價。
(7)wait方法
wait方法就是使當前線程等待該對象的鎖,當前線程必須是該對象的擁有者,也就是具有該對象的鎖。wait()方法一直等待,直到獲得鎖或者被中斷。wait(long timeout)設定一個超時間隔,如果在規定時間內沒有獲得鎖就返回。
調用該方法後當前線程進入睡眠狀態,直到以下事件發生。
(1)其他線程調用了該對象的notify方法。
(2)其他線程調用了該對象的notifyAll方法。
(3)其他線程調用了interrupt中斷該線程。
(4)時間間隔到了。
此時該線程就可以被調度了,如果是被中斷的話就拋出一個InterruptedException異常。
(8)notify方法
該方法喚醒在該對象上等待的某個線程。
(9)notifyAll方法
該方法喚醒在該對象上等待的所有線程。
6. Java object類中有哪些方法歸類總結一下
試問的最多的問題是:「」。一般情況下,3年以上工作經驗的回答少於6個方法的,會導致減分,2年以下工作經驗的知道6個以上會加分。到阿里雲後面試過30+,回答讓我滿意的人很少。 作為一個半路出家當程序員,開始我總是痴迷於應用。a框架的配置,b框架的模板,c框架的控制……其實我對Java底層了解的很少,也沒有想過了解java的底層。觸動我去看Object類的是幾件事。 在上個東家做消息全網傳輸的時候,我用BeanUtil.Properties()拷貝對象的值,覺得很爽,後面某同事review我的代碼提示我可以覆寫對象的clone()方法的,畢竟,反射的效率是比較低的。然後當我去做的時候,發現了更好的選擇。然後在列印日誌的時候,我習慣拼接屬性,於是又被提示覆寫toString()方法是包爽的,就這樣,我認識了Object的2個方法。 看《Effecive Java》這本書,中間提到「為什麼覆寫equals()方法的時候總是要覆寫hashcode()」。開始第一遍沒有看懂,也懶得管了,因為hashcode我用的少,後來去參加一個面試,被人問到的時候,感覺無比的尷尬,我讀過,卻不知道答案!這是個人總結能力的問題,後面又不能不回來仔細看看這2個方法到底是做什麼的。 關於線程的notify() , notifyAll() , wait()『3個』 方法,學習線程的時候看過,不過自從用了JUC的包,我基本沒有在代碼中使用過了。每次用eclipse的「alt + /」 快捷鍵從後翻總能看到,所以無論如何,這幾個方法應該知道。 寫到這里,有7個方法了,這幾個方法很容易想到,在我開發java2年後,能夠回答Object類中的7個方法。其實clone()方法不常用,所以,我 說的數字6是有依據的。這6個方法,作為java程序員,天天不見也會見幾次。如果寫了幾年java代碼不知道基類裡面的方法,就算你Hbase玩的再 熟,我憑什麼相信你能寫優質代碼?如果一個在農村蓋房子3年的砌匠不知道前後梁有多少瓴子(魯班收徒的故事),您會怎麼想?
7. java里的object類裡面有什麼方法
查看一下API講解object的部分吧,這是一個超類,所有的類都是該類的子類。
超類,意思就是所有類的父類,有equals()、hashCode()、wait()、toString()等方法
8. JAVA中Object類中 有幾個方法
Java中Object類Java基礎Java中所有類(包括用戶自己定義的類)都自動繼承Object類,即Object類是所有類的父類。Object中常用方法:public boolean equals(Object obj)比較當前對象與obj是否為同一對象,返回值:ture/falsepublic String toString()返回當前對象的字元串表達形式public native int hashCode();返回對象的Hash碼。Hash碼是標志對象的唯一值,Hash碼相同的對象是同一對象protected void finalize()throws Throwable對象銷毀時被調用以下三個函數用於控制線程public final native void notify();public final native void notifyAll();public final native void wait();native型方法指由C++語言編寫的方法,Java解釋器對其進行轉義後才執行。「==」與equals()"==" 一般用於基本數據類型比較。若用作兩個引用對象比較,僅當引用變數引用同一個對象時,才返回true,否則false。 void EqualCompare()
{
String s1 = new String("Hello");
String s2 = new String("Hello");
String s3 = "Hello";
String s4 = "Hello"; //未使用new,s4引用既存的對象(編譯器創建對象之前先進行檢測"Hello"是否已經存在,若存在,則返回原對象的引用)
System.out.println(s1.equals(s2)); // true x1行
System.out.println(s1 ==s2); // false 兩變數引用不同對象
System.out.println(s3.equals(s4)); //true 兩變數引用相同對象
System.out.println(s3 ==s4); // true 兩變數引用相同對象
}比較對象時,一般用equal()方法。Object類方法定義:public boolean equals(Object obj){ return (this == obj);}不同的類可方便的對該對象進行覆蓋。String類就覆蓋了Object類的equals()方法,所以x1行輸出true.a==b 如果a,b引用同一對象,則返回true;a.equals(b) 如果a對象內容和b對象內容相同,則返回true如果未重載equals()方法的類對象使用該方法與另一個對象進行比較,則調用Object的equals()方法,仍然是對象的比較,返回值為false。