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

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

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

1.Object類是什么?

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

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

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

??Object 類位于 java.lang 包中,編譯時會自動導(dǎo)入, 當(dāng)一個類被定義后,如果沒有指定繼承的父類,那么默認(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,輸出是錯誤的

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

??在java中提供了一個方法是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)行比較

??那就要重寫一個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了

 此時equals就可以比較了

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

3.Object類中的hashCode方法

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

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

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

 下面重寫一下hashCode,

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

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

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

4.編譯器自動生成equals和hashCode

一般重寫時,都是這兩個同時進(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í)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • mybatis-plus更新策略部分字段不更新問題

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

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

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

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

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

    Logback是由log4j創(chuàng)始人設(shè)計的另一個開源日志組件,默認(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)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-09-09
  • Java實(shí)現(xiàn)順序表的操作

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

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    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時間的方法詳解

    Java獲取UTC時間的方法詳解

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

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

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

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

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

最新評論

台湾省| 昌黎县| 金堂县| 墨竹工卡县| 津南区| 德保县| 增城市| 镇雄县| 蕲春县| 崇义县| 达拉特旗| 商城县| 定远县| 崇礼县| 青浦区| 铁岭市| 客服| 探索| 新密市| 贺州市| 儋州市| 曲靖市| 霍山县| 宁陵县| 工布江达县| 左权县| 筠连县| 宁夏| 分宜县| 阿鲁科尔沁旗| 赣州市| 昌平区| 上杭县| 商南县| 韩城市| 聊城市| 抚州市| 册亨县| 临城县| 察雅县| 阳西县|