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

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

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

1.Object類是什么?

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

也就是說,Java 允許把任何類型的對象賦給 Object 類型的變量。

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

??Object 類位于 java.lang 包中,編譯時(shí)會自動導(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();
    }
}

下面來看一下Object類中都有什么方法

本篇會簡單介紹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);
}

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

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

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

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

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

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

 可以看到里面比較的還是this和obj,也就是當(dāng)前傳進(jìn)來的參數(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類對象
        if (!(obj instanceof Person)) {
            return false;
        }
        Person ret = (Person) obj;
        return this.dz.equals(ret.dz);
    }

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

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

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

3.Object類中的hashCode方法

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

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

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

 下面重寫一下hashCode,

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

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

 ??所以,hashCode是用來定位 位置的

4.編譯器自動生成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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot+redis配置及測試的方法

    SpringBoot+redis配置及測試的方法

    這篇文章主要介紹了SpringBoot+redis配置及測試的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • mybatis-plus更新策略部分字段不更新問題

    mybatis-plus更新策略部分字段不更新問題

    這篇文章主要介紹了mybatis-plus更新策略部分字段不更新問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Hibernate對數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼

    Hibernate對數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼

    本篇文章主要介紹了Hibernate對數(shù)據(jù)庫刪除、查找、更新操作實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot集成logback打印彩色日志的代碼實(shí)現(xiàn)

    SpringBoot集成logback打印彩色日志的代碼實(shí)現(xiàn)

    Logback是由log4j創(chuàng)始人設(shè)計(jì)的另一個(gè)開源日志組件,默認(rèn)情況下,Spring?Boot會用Logback來記錄日志,并用INFO級別輸出到控制臺,本文給大家介紹了SpringBoot集成logback打印彩色日志,需要的朋友可以參考下
    2024-03-03
  • Spring?c3p0配置的實(shí)現(xiàn)示例

    Spring?c3p0配置的實(shí)現(xiàn)示例

    在Spring框架中配置c3p0連接池可以提升數(shù)據(jù)庫操作性能,本文主要介紹了Spring?c3p0配置的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-09-09
  • Java實(shí)現(xiàn)順序表的操作

    Java實(shí)現(xiàn)順序表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java解析方法的調(diào)用關(guān)系示例詳解

    Java解析方法的調(diào)用關(guān)系示例詳解

    這篇文章主要介紹了Java解析方法的調(diào)用關(guān)系,方法在Java編程中用于封裝重復(fù)的代碼,提高代碼復(fù)用性,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Java獲取UTC時(shí)間的方法詳解

    Java獲取UTC時(shí)間的方法詳解

    這篇文章主要介紹了Java獲取UTC時(shí)間的方法,結(jié)合具體實(shí)例形式詳細(xì)分析了Java針對時(shí)區(qū)、本地時(shí)間、時(shí)間偏移量等相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • 詳解SpringMVC攔截器配置及使用方法

    詳解SpringMVC攔截器配置及使用方法

    本篇文章主要介紹了SpringMVC攔截器配置及使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • 詳解spring注解式參數(shù)校驗(yàn)

    詳解spring注解式參數(shù)校驗(yàn)

    本篇文章主要介紹了詳解spring注解式參數(shù)校驗(yàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

南丰县| 武隆县| 松阳县| 巴南区| 称多县| 临高县| 江永县| 读书| 报价| 南昌市| 平潭县| 施秉县| 莱西市| 青龙| 乌兰察布市| 墨玉县| 凌海市| 松桃| 论坛| 石林| 营山县| 华蓥市| 广河县| 白山市| 商河县| 台中市| 泽普县| 阳春市| 若尔盖县| 芦溪县| 瓦房店市| 广灵县| 左权县| 舞钢市| 黑河市| 财经| 玉环县| 阿巴嘎旗| 蓬溪县| 中阳县| 浦城县|