equals的返回值(equals的用法)
關(guān)于equals的返回值,equals的用法這個(gè)問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!
1、1.equals的本意——即在Object對象中定義的equals()方法有什么樣的意義。
2、(此處先附上==的作用,后面仍有敘述。
3、因?yàn)?=和equals()方法的關(guān)系是很密切的,后面有我自己的看法。
4、 ==用于比較引用和比較基本數(shù)據(jù)類型時(shí)具有不同的功能: 比較基本數(shù)據(jù)類型,如果兩個(gè)值相同,則結(jié)果為true 而在比較引用時(shí),如果引用指向內(nèi)存中的同一對象,結(jié)果為true) public boolean equals(Object obj) 其比較規(guī)則為:當(dāng)參數(shù)obj引用的對象與當(dāng)前對象為同一個(gè)對象時(shí),就返回true,否則返回false.public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}public class EqualsTest { public static void main(String[] args) { Fish f1 = new Fish(1, "blue"); Fish f2 = new Fish(1, "blue"); System.out.println(f1 == f2); System.out.println(f1.equals(f2)); }}——————運(yùn)行結(jié)果為——————falsefalse由此可見,equals()方法的本意為確定兩個(gè)對象的引用是否相同。
5、2.而JDK類中有一些類覆蓋了oject類的equals()方法,比較規(guī)則為:如果兩個(gè)對象的類型一致,并且內(nèi)容一致,則返回true,這些類有:java.io.file,java.***.Date,java.lang.string,包裝類(Integer,Double等)public class EqualsTest { public static void main(String[] args) { String s1=new String("sss"); String s2=new String("sss"); System.out.println(s1==s2); System.out.println(s1.equals(s2)); }}————————運(yùn)行結(jié)果為——————falsetrue由此知道,在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個(gè)對象的內(nèi)容是否一致3.如果我們要自己覆蓋equals()方法,讓其比較內(nèi)容或者有別的使用方法(當(dāng)然我們一般都是用于比較內(nèi)容的,但是覆蓋的方法中真正的實(shí)現(xiàn)究竟是什么樣的,誰知道呢O(∩_∩)O~)public class Fish { private int weight; private String color; public Fish(int weight, String color) { this.color = color; this.weight = weight; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((color == null) ? 0 : color.hashCode()); result = prime * result + weight; return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Fish other = (Fish) obj; if (color == null) { if (other.color != null) return false; } else if (!color.equals(other.color)) return false; if (weight != other.weight) return false; return true; } public int getWeight() { return weight; } public void setWeight(int weight) { this.weight = weight; } public String getColor() { return color; } public void setColor(String color) { this.color = color; }}public class EqualsTest { public static void main(String[] args) { Fish f1 = new Fish(1, "blue"); Fish f2 = new Fish(1, "blue"); System.out.println(f1 == f2); System.out.println(f1.equals(f2)); }}——————運(yùn)行結(jié)果為——————falsetrue此例子中我復(fù)寫了equals()方法和hashcode()方法,使得equals()方法脫離的本意,不再是比較兩個(gè)對象的引用是否相同,而是比較其內(nèi)容是否相同。
6、以上內(nèi)容為一般書上的總結(jié),下面是我自己想到的一些東西。
7、我們可以知道計(jì)算機(jī)歸根到底進(jìn)行的只是一些二進(jìn)制數(shù)的與或非運(yùn)算,加法乘法運(yùn)算。
8、由此有了些基本的運(yùn)算符,所有的函數(shù)本質(zhì)上其實(shí)現(xiàn)都是使用基本運(yùn)算符來實(shí)現(xiàn)的。
9、而==是基本運(yùn)算符中的一個(gè),它的作用:用于比較引用和比較基本數(shù)據(jù)類型時(shí)具有不同的功能: 比較基本數(shù)據(jù)類型,如果兩個(gè)值相同,則結(jié)果為true 而在比較引用時(shí),如果引用指向內(nèi)存中的同一對象,結(jié)果為true而equals()作為方法,我們可以推測知道,它其中的實(shí)現(xiàn)所使用的肯定是==運(yùn)算符。
10、再進(jìn)一步的思考,equals()本意不正是==運(yùn)算符進(jìn)行對象比較時(shí)候的作用嗎。
11、那么,既然是兩者有同樣的作用,為什么還要弄出一個(gè)equals()方法來呢。
12、因?yàn)?=運(yùn)算符不允許我們進(jìn)行覆蓋,也就是說它限制了我們的表達(dá)。
13、在上面的第三個(gè)例子中,我們復(fù)寫equals()方法,達(dá)到比較對象內(nèi)容是否相同的目的。
14、而這些通過==運(yùn)算符是做不到的。
本文分享完畢,希望對大家有所幫助。
免責(zé)聲明:本文由用戶上傳,與本網(wǎng)站立場無關(guān)。財(cái)經(jīng)信息僅供讀者參考,并不構(gòu)成投資建議。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。 如有侵權(quán)請聯(lián)系刪除!
-
6月25-28日,由中國進(jìn)出境生物安全研究會、中國國際旅行衛(wèi)生保健協(xié)會主辦,中國青年創(chuàng)業(yè)就業(yè)基金會支持,中國出入...瀏覽全文>>
-
胃腸鏡檢查,聽起來可能有些令人不安,但實(shí)際上,它可能是生活中的救命稻草。對于一些人來說,定期進(jìn)行胃腸鏡...瀏覽全文>>
-
6月16日-20日,2025年優(yōu)秀博士后研究人員(紹興)研學(xué)活動順利舉行。本次活動匯聚了來自全國各地的百余名博士后,...瀏覽全文>>
-
近日,天津松果生物醫(yī)療科技有限公司自主研發(fā)的牛跟腱來源去端肽I型膠原蛋白原材料成功通過國家藥品監(jiān)督管理局...瀏覽全文>>
-
在數(shù)字化產(chǎn)業(yè)轉(zhuǎn)型的浪潮奔涌之際,病理學(xué)正經(jīng)歷著前所未有的革新機(jī)遇。奧偉登(Evident)憑借百年光學(xué)技術(shù)積淀,以...瀏覽全文>>
-
6月6-8日,CHINAGUT 2025中國腸道大會在寧波國際會議中心隆重舉辦。大會由南京醫(yī)科大學(xué)第二附屬醫(yī)院、國家消化...瀏覽全文>>
-
在第28屆北京國際口腔展這一行業(yè)風(fēng)向標(biāo)級盛會上,北京易嶺生物科技有限公司(下面簡稱易嶺生物)憑借重磅新品發(fā)...瀏覽全文>>
-
2025款上汽大眾ID 4 X在安徽阜陽地區(qū)的售價(jià)會根據(jù)配置和選裝包有所不同?;A(chǔ)版車型的廠商指導(dǎo)價(jià)大約在20萬...瀏覽全文>>
-
嵐圖FREE,作為一款集豪華與智能于一體的新能源SUV,正以全新的姿態(tài)迎接每一位渴望高品質(zhì)出行的用戶。現(xiàn)在,嵐...瀏覽全文>>
-
安徽阜陽的大眾ARTEON 2022新款現(xiàn)已到店,最低售價(jià)從34 80萬元起,無疑是近期購車的最佳時(shí)機(jī)。這款車型以其...瀏覽全文>>