本文目錄一覽:
java怎麼比較兩個對象是否相等?
一、java中的基本數據類型(int、double、short、long、byte、float、boolean、char)判斷是否相等,直接使用”==”就行了,相等返回true,否則,返回false。
二、但是java中的引用類型的對象比較變態,假設有兩個引用對象obj1,obj2,
obj1==obj2 判斷是obj1,obj2這兩個引用變量是否相等,即它們所指向的對象是否為同一個對象。言外之意就是要求兩個變量所指內存地址相等的時候,才能返回true,每個對象都有自己的一塊內存,因此必須指向同一個對象才返回ture。
三、如果想要自定義兩個對象(不是一個對象,即這兩個對象分別有自己的一塊內存)是否相等的規則,那麼必須在對象的類定義中重寫equals()方法,如果不重寫equals()方法的話,默認的比較方式是比較兩個對象是否為同一個對象。
在Java API中,有些類重寫了equals()方法,它們的比較規則是:當且僅當該equals方法參數不是 null,兩個變量的類型、內容都相同,則比較結果為true。這些類包括:String、Double、Float、Long、Integer、Short、Byte、、Boolean、BigDecimal、BigInteger等等,太多太多了,但是常見的就這些了,具體可以查看API中類的equals()方法,就知道了。
Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java 技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、遊戲控制台、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社群。
對象的相等與指向它們的引用相等,兩者有什麼不同?
首先,對象在內存堆上,引用在內存棧上(理解為線和氣球的關係)
對象相等表示2個是同一對象,即同一快內存,而引用相等,只是2個引用的地址值相等,都指向的堆上對象的地址
如果兩個對象具有相同的引用,則它們一定相等
是不是兩個引用指向同一個對象,就認為這兩個引用相等?
這個是對的。
另外,如果要比較不同引用指向的對象,他們的內容(指對象的各屬性值)是否相等。如果是自己寫的類的對象,則要自己覆蓋equals方法。
“利用.equal來比較,則比較兩個對象的內容是否一致”這種觀點是不對的。雖然對String類是對的,只是人家在寫String類的這個方法時,是這樣實現的。如果是自己寫的類,必須自己覆蓋這個方法,自己決定比較什麼內容,否則默認就是比較引用是否相等。因為每一個類都默認繼承了Object類,而Objcet類的equals方法里是使用==比較的。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/240515.html