欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

equals()如何在Java中使用

今天就跟大家聊聊有關(guān)equals()如何在Java中使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

我們提供的服務(wù)有:成都網(wǎng)站制作、網(wǎng)站建設(shè)、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、甘德ssl等。為成百上千企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的甘德網(wǎng)站制作公司

Java是什么

Java是一門面向?qū)ο缶幊陶Z言,可以編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。

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

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

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

public boolean equals(Object obj)

其比較規(guī)則為:當(dāng)參數(shù)obj引用的對象與當(dāng)前對象為同一個對象時,就返回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é)果為

false
false

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

2.而JDK類中有一些類覆蓋了oject類的equals()方法,比較規(guī)則為:如果兩個對象的類型一致,并且內(nèi)容一致,則返回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));
 }
}

運(yùn)行結(jié)果為

false
false

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

2.而JDK類中有一些類覆蓋了oject類的equals()方法,比較規(guī)則為:如果兩個對象的類型一致,并且內(nèi)容一致,則返回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));
  }
}

運(yùn)行結(jié)果為

false
true

由此知道,在String中equals()方法被進(jìn)行了覆蓋,使其意義變?yōu)楸容^兩個對象的內(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é)果為

false
true

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

以上內(nèi)容為一般書上的總結(jié),下面是我自己想到的一些東西。

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

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

看完上述內(nèi)容,你們對equals()如何在Java中使用有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

當(dāng)前文章:equals()如何在Java中使用
轉(zhuǎn)載來于:http://aaarwkj.com/article20/gdidco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊用戶體驗(yàn)、網(wǎng)站導(dǎo)航、靜態(tài)網(wǎng)站、App開發(fā)定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
精品亚洲一区二区三区四区| 青青草原一区二区三区| 国产午夜18久久久| 一区二区在线日韩视频| 国产精品无遮挡猛进猛出| 91国产精品视频在线| 日韩在线不卡av一区二区| 中文字幕日韩精品国产| 91九色国产成人久久精品| 高清国语对白刺激av在线播放| 亚洲欧美国产另类精品| 黄色永久网站在线播放| 精品欧美一区二区三区在线| 日韩高清av一区二区| 国产精品久久高清免费| 亚洲欧美日韩成人在线| 人妻系列日本在线播放| 五月天久久开心激情网| 国产美女冒白浆视频免费| 日韩成人一级片在线观看| 欧美国产激情一区二区| 午夜精品国产日韩欧美在线| 在线蜜臀av中文字幕| 国产性色精品一区二区| 欧美另类不卡在线观看| 免费在线免费观看av| 国产精品一区二区夜夜夜| 欧美精品福利一区二区三区 | 国产精品久久久av大片| 精品熟女少妇av免费观看| 亚洲一区二区三区免费观看视频| 亚洲香蕉在线视频免费| 清纯美女爱爱高潮av| 欧美日韩精品亚洲成人精品| 久久精品国产普通话对白| 99热视频这里只有精品| 成年黄网站免费视频大全| 星空无限传媒国产最新| 国产原创av超爽剧情系列| 日韩国产精品视频二区| 日韩有码高清av在线|