亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-10-17 13:44:51 來源:腳本之家 閱讀:148 作者:遍唱陽春 欄目:編程語言

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

1.toString方法:

Object類的toString()方法默認返回的是對象地址值,如果某個類的toString()方法返回的不是對象地址值,則說明這個類重寫了toString()方法。

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

接下來我們重寫Person的toString()方法

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

  //重寫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;
  }
}

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

public class Test5 {
  public static void main(String[] args) {
    Person p1=new Person();
    System.out.println(p1.toString());
    //重寫了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;
}

因為 == 比較的是對象的地址值,所以Object類的equals()默認比較的是地址值,需要重寫才有意義。具體如何重寫,就看我們比較兩個對象是否相同的依據是什么了。

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

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

再來測試一下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()方法的注意事項:

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

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

(3)null不可以調用方法,所以若a為空,則不能調用a.equals()方法,否則會出現NullPointERException.正因為如此,我們一般將常量或已知非空的對象放在前面,即寫成"aa".equals(str)而不是str.equals("aa").

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

玉山县| 苏尼特左旗| 保德县| 南康市| 商城县| 铁力市| 延边| 海南省| 城市| 隆回县| 霍城县| 巩义市| 汉阴县| 郓城县| 天等县| 金昌市| 常山县| 洞口县| 尖扎县| 商洛市| 伊金霍洛旗| 高安市| 博兴县| 农安县| 莆田市| 盘山县| 元江| 梁平县| 扶沟县| 许昌市| 登封市| 安图县| 雅安市| 上蔡县| 城固县| 珠海市| 长丰县| 沙坪坝区| 奈曼旗| 会昌县| 开江县|