Object類

1.Object類

Object類是Java中所有類的基類

1.1toString方法

返回對象的字符串表示形式褒颈。 一般來說诵姜, toString方法返回結(jié)果應(yīng)該是一個簡明扼要的表達姆泻,容易讓人閱讀身诺。 建議所有子類覆蓋此方法锭环。該toString類方法返回是一個哈希碼值(地址)。

package com.wyx.a_object;
class Person {
    String name;
    int age;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Person person = new Person();
        System.out.println(person);
    }
}

這個toString方法會在打印時候自動調(diào)用科侈,new對象時候不會調(diào)用载佳。

1.2equals方法

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

Object類下面的equals方法比較的是兩個對象的地址,不看內(nèi)容兑徘。
String類下面的equals方法比較的是內(nèi)容刚盈∠勐澹可以看出String類下面的equals方法重寫了Object類下面equals方法

需求:聲明一個Sutdent類挂脑,new兩個對象,判斷兩個對象內(nèi)容是否相等欲侮,相等輸出true

idea給我們提供了快捷鍵重寫equals方法崭闲,下面是作者自己寫的,沒有使用快捷鍵

package com.wyx.a_object;

import java.util.Objects;

class Student {
    String name;
    int age;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o instanceof Student) {
            Student stu = (Student)o;
            return this.name.equals(stu.name) && this.age == stu.age;
        }
        return false;
    }


}
public class Demo2 {
    public static void main(String[] args) {
        Student stu1 = new Student("小明",12);
        Student stu2 = new Student("小明",12);
        System.out.println(stu1.equals(stu2));
    }
}

使用快捷鍵equals寫法

package com.wyx.a_object;

import java.util.Objects;

class Student {
    String name;
    int age;

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

}
public class Demo2 {
    public static void main(String[] args) {
        Student stu1 = new Student("小明",12);
        Student stu2 = new Student("小明",12);
        System.out.println(stu1.equals(stu2));
    }
}

1.3hashCode()方法

int hashCode();

哈希碼值:在Object類下面威蕉,將內(nèi)存地址(十六進制的值)轉(zhuǎn)為十進制的值刁俭,此時這個十進制的值就叫hash碼。

package com.wyx.a_object;

class Teacher{

}
public class Demo3 {
    public static void main(String[] args) {
        Teacher teacher1 = new Teacher();
        Teacher teacher2 = new Teacher();
        System.out.println(teacher1.hashCode());
        System.out.println(teacher2.hashCode());
    }
}

在String類下面的hashCode()方法是不一樣的韧涨,因為重寫了父類的方法牍戚。

package com.wyx.a_object;

public class Demo4 {
    public static void main(String[] args) {
        String str1 = new String("a");
        String str2 = new String("b");
        System.out.println(str1.hashCode());//97
        System.out.println(str2.hashCode());//98
    }
}

注意:

如果根據(jù)equals(Object)方法兩個對象相等,
則在兩個對象中的每個對象上調(diào)用hashCode方法虑粥,
須產(chǎn)生相同的整數(shù)結(jié)果如孝。

如果兩個對象的hash值一樣,對象是不一定一樣
的娩贷。但是如果兩個對象內(nèi)容相等那么hash值一定相等

所以重寫equals方法時候也要重寫hashCode方法第晰,
以便維護hashCode方法的通用合同,該方法規(guī)定
相等的對象必須具有相等的哈希嗎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茁瘦,一起剝皮案震驚了整個濱河市品抽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌甜熔,老刑警劉巖圆恤,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纺非,居然都是意外死亡哑了,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門烧颖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弱左,“玉大人,你說我怎么就攤上這事炕淮〔鸹穑” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵涂圆,是天一觀的道長们镜。 經(jīng)常有香客問我,道長润歉,這世上最難降的妖魔是什么模狭? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮踩衩,結(jié)果婚禮上嚼鹉,老公的妹妹穿的比我還像新娘。我一直安慰自己驱富,他們只是感情好锚赤,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著褐鸥,像睡著了一般线脚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上叫榕,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天浑侥,我揣著相機與錄音,去河邊找鬼晰绎。 笑死寓落,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寒匙。 我是一名探鬼主播零如,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼躏将,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤泵殴,失蹤者是張志新(化名)和其女友劉穎切厘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了拦赠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡葵姥,死狀恐怖荷鼠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榔幸,我是刑警寧澤允乐,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站削咆,受9級特大地震影響牍疏,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拨齐,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一鳞陨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧瞻惋,春花似錦厦滤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽窄俏。三九已至蹂匹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間凹蜈,已是汗流浹背限寞。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留仰坦,地道東北人履植。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像悄晃,于是被迫代替她去往敵國和親玫霎。 傳聞我的和親對象是個殘疾皇子凿滤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容