欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中的Object類用法總結(jié)

 更新時(shí)間:2023年04月23日 09:27:37   作者:快到鍋里來(lái)呀  
Java是一種面向?qū)ο蟮木幊陶Z(yǔ)言,它提供了一個(gè)非常強(qiáng)大的類庫(kù),其中一個(gè)基本類是Object類,下面這篇文章主要給大家介紹了Java中Object類用法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1.Object類是什么?

??Object 是 Java 類庫(kù)中的一個(gè)特殊類,也是所有類的父類。

也就是說(shuō),Java 允許把任何類型的對(duì)象賦給 Object 類型的變量。

??Java里面除了Object類,所有的類存在繼承關(guān)系的。

??Object 類位于 java.lang 包中,編譯時(shí)會(huì)自動(dòng)導(dǎo)入, 當(dāng)一個(gè)類被定義后,如果沒有指定繼承的父類,那么默認(rèn)父類就是 Object 類。

class Person {}
class Student {}
public class Test03 {
    public static void func(Object o) {  }
 
    public static void main(String[] args) {
        func(new Person());
        func(new Student());
    }
    public static void main1(String[] args) {
        Object o = new Person();
        Object o2 = new Student();
    }
}

下面來(lái)看一下Object類中都有什么方法

本篇會(huì)簡(jiǎn)單介紹hashCode(),equals()

2.Object類中的equals方法

下面看這樣一段代碼

class Person {
    public String dz;
    public Person(String dz) {
        this.dz = dz;
    }
    @Override
    public String toString() {
        return "Person{" +
                "dz='" + dz + '\'' +
                '}';
    }
}
class Student {
 
}
public class Test03 {
 
    public static void main(String[] args) {
        Person person = new Person("beijing");
        Person person1 = new Person("beijing");
        System.out.println(person == person1);
}

 如果直接這樣比較,看地址是否相同,就會(huì)輸出false,輸出是錯(cuò)誤的

??那么如果要比較,有什么方法嗎

??在java中提供了一個(gè)方法是equals,可以用來(lái)比較兩對(duì)象是否相同

System.out.println(person.equals(person1));

如果直接在main中這樣寫,還是會(huì)輸出false,

這是因?yàn)閜erson里面沒有equals,默認(rèn)是繼承于Object的

 可以看到里面比較的還是this和obj,也就是當(dāng)前傳進(jìn)來(lái)的參數(shù),所以才是false。

??那么如何用equals進(jìn)行比較

??那就要重寫一個(gè)equals才可以進(jìn)行比較

    @Override
    public boolean equals(Object obj) {
        //判斷當(dāng)前obj參數(shù)是否為null
        if (obj == null) {
            return false;
        }
        if (this == obj) {
            return true;
        }
        //不是Person類對(duì)象
        if (!(obj instanceof Person)) {
            return false;
        }
        Person ret = (Person) obj;
        return this.dz.equals(ret.dz);
    }

??我們可以String幫助重寫equals了

 此時(shí)equals就可以比較了

??比較對(duì)象中內(nèi)容是否相同的時(shí)候 要重寫equals

3.Object類中的hashCode方法

??使用hashCode可以計(jì)算具體的對(duì)象位置,也就是內(nèi)存地址,然后調(diào)Integer.toHexString()方法,將這個(gè)地址以16進(jìn)制輸出

?? 兩個(gè)dz是相同的,然后直接用hashCode計(jì)算內(nèi)存地址,然后代碼發(fā)現(xiàn),內(nèi)存地址是不同的

說(shuō)明直接這樣中hashCode是不行的,那就要重新實(shí)現(xiàn)一個(gè)hashCode,

 下面重寫一下hashCode,

    @Override
    public int hashCode() {
        return Objects.hash(dz);
    }

然后運(yùn)行代碼試試看,果然重寫之后,內(nèi)存地址相同了

 ??所以,hashCode是用來(lái)定位 位置的

4.編譯器自動(dòng)生成equals和hashCode

一般重寫時(shí),都是這兩個(gè)同時(shí)進(jìn)行重寫

這就是生成好了的 equals和hashCode

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Person person = (Person) o;
        return Objects.equals(dz, person.dz);
    }

總結(jié)

到此這篇關(guān)于Java中的Object類用法總結(jié)的文章就介紹到這了,更多相關(guān)Java的Object類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java中對(duì)List集合的常用操作詳解

    Java中對(duì)List集合的常用操作詳解

    下面小編就為大家?guī)?lái)一篇Java中對(duì)List集合的常用操作詳解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-07-07
  • Java實(shí)現(xiàn)過濾掉map集合中key或value為空的值示例

    Java實(shí)現(xiàn)過濾掉map集合中key或value為空的值示例

    這篇文章主要介紹了Java實(shí)現(xiàn)過濾掉map集合中key或value為空的值,涉及java針對(duì)map的簡(jiǎn)單遍歷、判斷、移除等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • springboot集成shiro自定義登陸過濾器方法

    springboot集成shiro自定義登陸過濾器方法

    這篇文章主要介紹了springboot集成shiro自定義登陸過濾器方法,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • 解決@Transactional注解事務(wù)不回滾不起作用的問題

    解決@Transactional注解事務(wù)不回滾不起作用的問題

    這篇文章主要介紹了解決@Transactional注解事務(wù)不回滾不起作用的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-02-02
  • Spring Boot定時(shí)器創(chuàng)建及使用解析

    Spring Boot定時(shí)器創(chuàng)建及使用解析

    這篇文章主要介紹了Spring Boot定時(shí)器創(chuàng)建及使用解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java contains用法示例

    Java contains用法示例

    這篇文章主要介紹了Java contains的用法示例,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-11-11
  • Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)

    Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 一篇文中細(xì)看Java多線程的創(chuàng)建方式

    一篇文中細(xì)看Java多線程的創(chuàng)建方式

    隨著計(jì)算機(jī)的配置越來(lái)越高,我們需要將進(jìn)程進(jìn)一步優(yōu)化,細(xì)分為線程,充分提高圖形化界面的多線程的開發(fā),這篇文章主要給大家介紹了如何通過一篇文中細(xì)看Java多線程的創(chuàng)建方式,需要的朋友可以參考下
    2021-07-07
  • Java處理延時(shí)任務(wù)的常用幾種解決方案

    Java處理延時(shí)任務(wù)的常用幾種解決方案

    本文主要介紹了Java處理延時(shí)任務(wù)的常用幾種解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 老生常談Java String字符串(必看篇)

    老生常談Java String字符串(必看篇)

    下面小編就為大家?guī)?lái)一篇老生常談Java String字符串(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-08-08

最新評(píng)論