Java學習筆記18(Object類),學習筆記object

來源:互聯網
上載者:User

Java學習筆記18(Object類),學習筆記object

Object類是Java中最頂層的父類,所有類都是它的子類,介面不繼承它

Object類中的方法:

官方資料:boolean equals(Object obj)  指示其他某個對象是否與此對象“相等”

樣本:

package demo;public class Person extends Object {    private String name;    private int age;    public Person() {    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }    // 重寫父類的equals方法    // 原始碼相同,equals是比較兩個對象的記憶體位址    public boolean equals(Object obj) {        return this == obj;    }    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;    }}

 

package demo;public class TestEquals {    public static void main(String[] args) {        //Person類繼承了Object類,繼承了父類的方法        Person p1 = new Person("張三", 18);        Person p2 = new Person("李四", 20);        boolean b1 = p1.equals(p2);        System.out.println(b1);//輸出false        p1 = p2;        boolean b2 = p1.equals(p2);        System.out.println(b2);//輸出true            }}

 

不過發現比較記憶體位址是沒有意義的,為了滿足一些需求,我們可以重寫下equals方法:

 

package demo;public class Person extends Object {    private String name;    private int age;    public Person() {    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }    // 重寫父類的equals方法,自己定義比較方式    // 比較兩個對象的age是否相同    public boolean equals(Object obj) {        // 處理傳入的是本身的情況        if (this == obj) {            return true;        }        // 處理傳入空的情況        if (obj == null) {            return false;        }        // 多態中不能調用子類的特性,所以需要向下轉型        // 加入instanceof為了防止風險,因為Object是頂層父類,防止傳入其他的類        if (obj instanceof Person) {            Person p = (Person) obj;            return this.age == p.age;        } else {            return false;        }    }    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;    }}
package demo;public class TestEquals {    public static void main(String[] args) {        //Person類繼承了Object類,繼承了父類的方法        Person p1 = new Person("張三", 20);        Person p2 = new Person("李四", 20);        boolean b1 = p1.equals(p2);        System.out.println(b1);//輸出true    }}

 

toString方法:

官方資料:String toString() 返回該對象的字串表示

繼續上邊的Person類寫個樣本:

package demo;public class TestToString {    public static void main(String[] args) {        Person p1 = new Person("張三", 18);        String s1 = p1.toString();        System.out.println(s1);        System.out.println(p1);    }}/*這裡兩個輸出相同:demo.Person@2cdb03a1demo.Person@2cdb03a1所以我們發現,輸入語句中如果寫的是一個對象,預設調用對象的toString方法*/

 

其實得到記憶體位址沒有什麼實際意義,為了滿足一些需求,所以我們重寫下toString方法:

package demo;public class Person extends Object {    private String name;    private int age;    public Person() {    }    public Person(String name, int age) {        this.name = name;        this.age = age;    }        //重寫父類的toString方法    public String toString(){        return this.name+this.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;    }}
package demo;public class TestToString {    public static void main(String[] args) {        Person p1 = new Person("張三", 18);        String s1 = p1.toString();        System.out.println(s1);        System.out.println(p1);    }}/*這裡兩個輸出總是相同:張三18張三18我們發現,輸入語句中如果寫的是一個對象,總是預設調用對象的toString方法*/

 

Object還有其他方法,有些不常用,有些會在後邊提到

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.