亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Java中equals()知識點總結

瀏覽:91日期:2022-09-03 16:48:12

經過幾天的學習,終于對equals的用法有了比較全面的認識,并做一個總結。

1.equals的本意——即在Object對象中定義的equals()方法有什么樣的意義。

(此處先附上==的作用,后面仍有敘述。因為==和equals()方法的關系是很密切的,后面有我自己的看法。

==用于比較引用和比較基本數據類型時具有不同的功能:比較基本數據類型,如果兩個值相同,則結果為true而在比較引用時,如果引用指向內存中的同一對象,結果為true)

public boolean equals(Object obj)

其比較規則為:當參數obj引用的對象與當前對象為同一個對象時,就返回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)); }}

運行結果為

falsefalse

由此可見,equals()方法的本意為確定兩個對象的引用是否相同。

2.而JDK類中有一些類覆蓋了oject類的equals()方法,比較規則為:如果兩個對象的類型一致,并且內容一致,則返回true,這些類有:

java.io.file,java.util.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)); }}

運行結果為

falsefalse

由此可見,equals()方法的本意為確定兩個對象的引用是否相同。

2.而JDK類中有一些類覆蓋了oject類的equals()方法,比較規則為:如果兩個對象的類型一致,并且內容一致,則返回true,這些類有:

java.io.file,java.util.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)); }}

運行結果為

falsetrue

由此知道,在String中equals()方法被進行了覆蓋,使其意義變為比較兩個對象的內容是否一致

3.如果我們要自己覆蓋equals()方法,讓其比較內容或者有別的使用方法(當然我們一般都是用于比較內容的,但是覆蓋的方法中真正的實現究竟是什么樣的,誰知道呢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)); }}

運行結果為

falsetrue

此例子中我復寫了equals()方法和hashcode()方法,使得equals()方法脫離的本意,不再是比較兩個對象的引用是否相同,而是比較其內容是否相同。

以上內容為一般書上的總結,下面是我自己想到的一些東西。

我們可以知道計算機歸根到底進行的只是一些二進制數的與或非運算,加法乘法運算。由此有了些基本的運算符,所有的函數本質上其實現都是使用基本運算符來實現的。而==是基本運算符中的一個,它的作用:用于比較引用和比較基本數據類型時具有不同的功能:比較基本數據類型,如果兩個值相同,則結果為true而在比較引用時,如果引用指向內存中的同一對象,結果為true

而equals()作為方法,我們可以推測知道,它其中的實現所使用的肯定是==運算符。再進一步的思考,equals()本意不正是==運算符進行對象比較時候的作用嗎。那么,既然是兩者有同樣的作用,為什么還要弄出一個equals()方法來呢。因為==運算符不允許我們進行覆蓋,也就是說它限制了我們的表達。在上面的第三個例子中,我們復寫equals()方法,達到比較對象內容是否相同的目的。而這些通過==運算符是做不到的。

到此這篇關于Java中equals()知識點總結的文章就介紹到這了,更多相關Java中的equals()內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 日韩中文字幕在线 | 久久精品视频在线观看 | 99精品视频在线观看免费播放 | a级毛片高清免费视频 | 夜色成人影院在线www | 一级特黄特交牲大片 | 最近免费中文在线视频 | 日韩中文字幕高清在线专区 | 久久久久亚洲国产 | 久青草国产高清在线视频 | 精品欧美成人bd高清在线观看 | 国产尻逼视频 | 国产精品无码久久综合网 | 成人蜜桃网 | 欧美黄色影视 | 国产欧美日韩在线观看一区二区三区 | 婷婷香蕉 | 亚洲精品成人久久 | 国产真实露脸4p视频 | 青青草97国产精品免费观看 | 激情毛片视频在线播放 | 亚洲激情婷婷 | 日韩在线你懂的 | 一级黄色录像大片 | 国产精品亚洲专一区二区三区 | 99久久综合狠狠综合久久aⅴ | 99热国产这里只有精品9九 | 色综合中文字幕天天在线 | 亚洲美女福利视频在线 | 五月天久久婷婷 | 精品国产成人高清在线 | 亚洲第一区在线观看 | 久久精品福利视频在线观看 | 做受又硬又粗又免费视频 | 色婷婷六月桃花综合影院 | 免费a级特黄国产大片 | 国产美女亚洲精品久久久久久 | 伊人久久成人成综合网222 | 毛片精品 | 国产一二三四区中 | 美女黄网站人色视频免费国产 |