java對(duì)象是什么 如何比較java對(duì)象是同一個(gè)對(duì)象?
如何比較java對(duì)象是同一個(gè)對(duì)象?Java在基本數(shù)據(jù)類型中判斷是否相等,直接用“==”就行,等于返回true,否則返回false。但是Java中引用類型的對(duì)象是不同的。假設(shè)有兩個(gè)參照對(duì)象obb1,ob
如何比較java對(duì)象是同一個(gè)對(duì)象?
Java在基本數(shù)據(jù)類型中判斷是否相等,直接用“==”就行,等于返回true,否則返回false。
但是Java中引用類型的對(duì)象是不同的。假設(shè)有兩個(gè)參照對(duì)象obb1,obb2,obb1==obb2,判斷兩個(gè)參照變量obb1和obb2是否相等,即它們所指向的對(duì)象是否是同一個(gè)對(duì)象。這意味著只有當(dāng)兩個(gè)變量的內(nèi)存地址相等時(shí),才能返回true。每個(gè)對(duì)象都有自己的內(nèi)存,因此它必須指向同一個(gè)對(duì)象才能返回true。
如果要自定義兩個(gè)對(duì)象是否相等的規(guī)則,必須重寫(xiě)對(duì)象的類定義中的equals()方法。如果不重寫(xiě)equals()方法,則默認(rèn)比較方法是比較兩個(gè)對(duì)象是否為同一對(duì)象。在javaapi中,有些類重寫(xiě)equals()方法。它們的比較規(guī)則是:當(dāng)且僅當(dāng)equals方法參數(shù)不為null且兩個(gè)變量的類型和內(nèi)容相同時(shí),比較結(jié)果為真。
重寫(xiě)equals()方法的步驟通常如下:
1。先用“==”判斷是否相等。
2. 判斷equals()方法的參數(shù)是否為空。如果為空,則返回false。因?yàn)楫?dāng)前對(duì)象不能為null,如果為null,則不能調(diào)用其equals()方法,否則將被拒絕java.lang.NullPointerException異常不正常。
3. 如果參數(shù)不為null,則如果兩個(gè)對(duì)象的運(yùn)行時(shí)類(通過(guò)getclass()獲得)不相等,則返回false。否則,繼續(xù)判斷。
4. 確定班級(jí)成員是否平等。