最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Object類toString()和equals()方法使用解析

 更新時(shí)間:2020年02月26日 12:45:21   作者:遍唱陽(yáng)春  
這篇文章主要介紹了Object類toString()和equals()方法使用解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

我們知道,Object類是所有類的父類,因此也被稱為根類、祖先。那么,我們就來(lái)看一看Object類的最常用的兩個(gè)方法是如何用的。

1.toString方法:

Object類的toString()方法默認(rèn)返回的是對(duì)象地址值,如果某個(gè)類的toString()方法返回的不是對(duì)象地址值,則說(shuō)明這個(gè)類重寫(xiě)了toString()方法。

public class Test5 {
  public static void main(String[] args) {
    Person p1=new Person();
    System.out.println(p1.toString());
    //沒(méi)有重寫(xiě)toString()方法,返回的是對(duì)象的地址值 cn.itcast.Person@3feba861
  }
}

接下來(lái)我們重寫(xiě)Person的toString()方法

public class Person {
  private String name;
  private int age;

  //重寫(xiě)toString()方法
  @Override
  public String toString() {
    return "姓名: "+name+" 年齡:"+age;
  }

  public Person(){

  }
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public int getAge() {
    return age;
  }

  public void setAge(int age) {
    this.age = age;
  }
}

再來(lái)看看toString()方法返回的值:

public class Test5 {
  public static void main(String[] args) {
    Person p1=new Person();
    System.out.println(p1.toString());
    //重寫(xiě)了toString()方法,返回的是方法的返回值
    Person p2=new Person("aaa",18);
    System.out.println(p2.toString());
//    姓名: null 年齡:0
//    姓名: aaa 年齡:18
  }
}

2.equals方法:

equals()方法的源碼如下所示:

public boolean equali(Object obj){
 return this==obj;
}

因?yàn)?== 比較的是對(duì)象的地址值,所以O(shè)bject類的equals()默認(rèn)比較的是地址值,需要重寫(xiě)才有意義。具體如何重寫(xiě),就看我們比較兩個(gè)對(duì)象是否相同的依據(jù)是什么了。

舉個(gè)例子:我們規(guī)定,如果兩個(gè)人的姓名和年齡都一樣,那么兩個(gè)人相同。

  //重寫(xiě)Person類的equals()方法
  @Override
  public boolean equals(Object obj) {
    return this.name==((Person)obj).name&&this.age==((Person)obj).age;
  }

再來(lái)測(cè)試一下equals()方法:

public class Test5 {
  public static void main(String[] args) {  
    Person p3=new Person("aa",21);
    Person p4=new Person("aa",23);
    Person p5=new Person("bb",21);
    Person p6=new Person("aa",21);
    System.out.println(p3.equals(p4)); //false
    System.out.println(p3.equals(p5)); //false
    System.out.println(p3.equals(p6)); //true
  }
}

equals()方法的注意事項(xiàng):

(1)除了用a.equals(b)這個(gè)寫(xiě)法之外,也可以用Objects.equals(a,b),作用是一樣的。

(2)equals方法空指針安全,即容忍空指針。即equals()方法中的參數(shù)可以有null,返回值永遠(yuǎn)為false。

(3)null不可以調(diào)用方法,所以若a為空,則不能調(diào)用a.equals()方法,否則會(huì)出現(xiàn)NullPointERException.正因?yàn)槿绱?,我們一般將常量或已知非空的?duì)象放在前面,即寫(xiě)成"aa".equals(str)而不是str.equals("aa").

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • java8 stream 如何打印數(shù)據(jù)元素

    java8 stream 如何打印數(shù)據(jù)元素

    這篇文章主要介紹了java8 stream 如何打印數(shù)據(jù)元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 淺談Java利用表格模型創(chuàng)建表格

    淺談Java利用表格模型創(chuàng)建表格

    這篇文章主要介紹了Java利用表格模型創(chuàng)建表格,需要的朋友可以參考下
    2017-09-09
  • java固定大小隊(duì)列的幾種實(shí)現(xiàn)方式詳解

    java固定大小隊(duì)列的幾種實(shí)現(xiàn)方式詳解

    隊(duì)列的特點(diǎn)是節(jié)點(diǎn)的排隊(duì)次序和出隊(duì)次序按入隊(duì)時(shí)間先后確定,即先入隊(duì)者先出隊(duì),后入隊(duì)者后出隊(duì),這篇文章主要給大家介紹了關(guān)于java固定大小隊(duì)列的幾種實(shí)現(xiàn)方式,需要的朋友可以參考下
    2021-07-07
  • java如何獲取map中value的最大值

    java如何獲取map中value的最大值

    這篇文章主要介紹了java如何獲取map中value的最大值問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • java獲取當(dāng)前時(shí)間的四種方法代碼實(shí)例

    java獲取當(dāng)前時(shí)間的四種方法代碼實(shí)例

    這篇文章主要介紹了java獲取當(dāng)前時(shí)間的四種方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法

    下面小編就為大家?guī)?lái)一篇java中pdf轉(zhuǎn)圖片的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12
  • java開(kāi)發(fā)使用BigDecimal避坑四則

    java開(kāi)發(fā)使用BigDecimal避坑四則

    這篇文章主要為大家介紹了java開(kāi)發(fā)使用BigDecimal的避坑四則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 淺談servlet3異步原理與實(shí)踐

    淺談servlet3異步原理與實(shí)踐

    本篇文章主要介紹了servlet3異步原理與實(shí)踐,詳細(xì)的介紹了servlet和異步的流程使用,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-10-10
  • spring的父子容器及配置詳解

    spring的父子容器及配置詳解

    本篇文章主要介紹了spring的父子容器及配置詳解,詳細(xì)的介紹了spring父子容器的概念、使用場(chǎng)景和用法,有興趣的可以了解一下
    2018-01-01
  • c語(yǔ)言來(lái)實(shí)現(xiàn)貪心算法之裝箱問(wèn)題

    c語(yǔ)言來(lái)實(shí)現(xiàn)貪心算法之裝箱問(wèn)題

    這篇文章主要介紹了c語(yǔ)言來(lái)實(shí)現(xiàn)貪心算法之裝箱問(wèn)題,需要的朋友可以參考下
    2015-03-03

最新評(píng)論

荆门市| 临湘市| 绿春县| 盐池县| 新兴县| 萨迦县| 河津市| 浮山县| 南昌县| 保康县| 山丹县| 聊城市| 尉氏县| 东乌珠穆沁旗| 正蓝旗| 韶山市| 繁峙县| 宾阳县| 惠水县| 滕州市| 扎鲁特旗| 揭阳市| 当阳市| 浦城县| 达日县| 广安市| 宣化县| 岳阳市| 旬邑县| 丹棱县| 永仁县| 陈巴尔虎旗| 屯门区| 凭祥市| 荣昌县| 新蔡县| 双峰县| 芜湖市| 石狮市| 尚义县| 南城县|