亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的Object類用法總結

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

1.Object類是什么?

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

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

??Java里面除了Object類,所有的類存在繼承關系的。

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

這是因為person里面沒有equals,默認是繼承于Object的

 可以看到里面比較的還是this和obj,也就是當前傳進來的參數(shù),所以才是false。

??那么如何用equals進行比較

??那就要重寫一個equals才可以進行比較

    @Override
    public boolean equals(Object obj) {
        //判斷當前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進制輸出

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

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

 下面重寫一下hashCode,

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

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

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

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

一般重寫時,都是這兩個同時進行重寫

這就是生成好了的 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);
    }

總結

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

相關文章

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

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

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

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

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

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

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

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

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

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

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

    Java contains用法示例

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

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

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

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

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

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

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

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

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

最新評論