ios怎么看是否越獄 c#如何判斷兩個(gè)對(duì)象是否相等?
c#如何判斷兩個(gè)對(duì)象是否相等?默認(rèn)等號(hào)=只能判斷兩個(gè)對(duì)象是否指向同一目標(biāo),而不能判斷它們是否相等,因?yàn)榕袛鄡蓚€(gè)復(fù)雜類是否真的相等非常復(fù)雜。只有實(shí)現(xiàn)IComparable接口的類才能使用CompareT
c#如何判斷兩個(gè)對(duì)象是否相等?
默認(rèn)等號(hào)=只能判斷兩個(gè)對(duì)象是否指向同一目標(biāo),而不能判斷它們是否相等,因?yàn)榕袛鄡蓚€(gè)復(fù)雜類是否真的相等非常復(fù)雜。只有實(shí)現(xiàn)IComparable接口的類才能使用CompareTo方法來判斷它們是否相等。沒有辦法直接判斷任何一個(gè)類的兩個(gè)對(duì)象是否相等
1、Java在基本數(shù)據(jù)類型(int、double、short、long、byte、float、Boolean、char)中判斷是否相等,直接用“=”上行,等于返回true,否則返回false。
2、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。
3、如果要定義兩個(gè)對(duì)象(不是一個(gè)對(duì)象,即兩個(gè)對(duì)象有自己的內(nèi)存)是否相等,則必須重寫對(duì)象的類定義中的equals()方法。如果不重寫equals()方法,則默認(rèn)比較方法是比較兩個(gè)對(duì)象是否為同一對(duì)象。
在Java API中,有些類重寫equals()方法。它們的比較規(guī)則是:當(dāng)且僅當(dāng)equals方法參數(shù)不為null且兩個(gè)變量的類型和內(nèi)容相同時(shí),比較結(jié)果為真。這些類包括:string、double、float、long、integer、short、byte、Boolean、BigDecimal、BigInteger等等。太多了,太多了,但這些都是常見的。有關(guān)詳細(xì)信息,可以檢查API中類的equals()方法。
首先判斷兩個(gè)對(duì)象的hashcode()是否相等,然后判斷equals()是否相等。如果兩個(gè)對(duì)象相等,則它們相等。最后,equals()決定了兩個(gè)對(duì)象是否相等。hashcode()的存在只是比較的效率。如果沒有hashcode(),比較會(huì)很慢。Equals()是判斷的唯一標(biāo)準(zhǔn),hashcode()更快