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

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)文章

  • Java中對List集合的常用操作詳解

    Java中對List集合的常用操作詳解

    下面小編就為大家?guī)硪黄狫ava中對List集合的常用操作詳解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    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針對map的簡單遍歷、判斷、移除等相關(guān)操作技巧,需要的朋友可以參考下
    2018-06-06
  • springboot集成shiro自定義登陸過濾器方法

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

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

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

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

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

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

    Java contains用法示例

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

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

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

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

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

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

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

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

    下面小編就為大家?guī)硪黄仙U凧ava String字符串(必看篇)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08

最新評論