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

一文搞懂Java頂層類(lèi)之Object類(lèi)的使用

 更新時(shí)間:2022年11月14日 09:34:17   作者:共飲一杯無(wú)  
java.lang.Object類(lèi)是Java語(yǔ)言中的根類(lèi),即所有類(lèi)的父類(lèi)。它中描述的所有方法子類(lèi)都可以使用。本文主要介紹了Object類(lèi)中toString和equals方法的使用,感興趣的小伙伴可以了解一下

概述

java.lang.Object類(lèi)是Java語(yǔ)言中的根類(lèi),即所有類(lèi)的父類(lèi)。它中描述的所有方法子類(lèi)都可以使用。在對(duì)象實(shí)例化的時(shí)候,最終找的父類(lèi)就是Object。 如果一個(gè)類(lèi)沒(méi)有特別指定父類(lèi),那么默認(rèn)則繼承自O(shè)bject類(lèi)。例如:

public class MyClass /*extends Object*/ {
    // ...
}

根據(jù)JDK源代碼及Object類(lèi)的API文檔,Object類(lèi)當(dāng)中包含的方法有11個(gè)。今天我們主要講最常用的其中的2個(gè):

  • public String toString():返回該對(duì)象的字符串表示。
  • public boolean equals(Object obj):指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。

toString方法

方法摘要

public String toString():返回該對(duì)象的字符串表示。

toString方法返回該對(duì)象的字符串表示,其實(shí)該字符串內(nèi)容就是對(duì)象的類(lèi)型+@+內(nèi)存地址值。 由于toString方法返回的結(jié)果是內(nèi)存地址,而在開(kāi)發(fā)中,經(jīng)常需要按照對(duì)象的屬性得到相應(yīng)的字符串表現(xiàn)形式,因此也需要重寫(xiě)它。

覆蓋重寫(xiě)

如果不希望使用toString方法的默認(rèn)行為,則可以對(duì)它進(jìn)行覆蓋重寫(xiě)。例如自定義的Person類(lèi):

public class Person {  
    private String name;
    private int age;

    @Override
    public String toString() {
        return "Person{" + "name='" + name + '\'' + ", age=" + age + '}';
    }

    // 省略構(gòu)造器與Getter Setter
}

在IntelliJ IDEA中,可以點(diǎn)擊Code菜單中的Generate...,也可以使用快捷鍵alt+insert,點(diǎn)擊toString()選項(xiàng)。選擇需要包含的成員變量并確定。 ??小貼士: 在我們直接使用輸出語(yǔ)句輸出對(duì)象名的時(shí)候,其實(shí)通過(guò)該對(duì)象調(diào)用了其toString()方法。

equals方法

方法摘要

public boolean equals(Object obj):指示其他某個(gè)對(duì)象是否與此對(duì)象“相等”。

調(diào)用成員方法equals并指定參數(shù)為另一個(gè)對(duì)象,則可以判斷這兩個(gè)對(duì)象是否是相同的。這里的“相同”有默認(rèn)和自定義兩種方式。

默認(rèn)地址比較

如果沒(méi)有覆蓋重寫(xiě)equals方法,那么Object類(lèi)中默認(rèn)進(jìn)行==運(yùn)算符的對(duì)象地址比較,只要不是同一個(gè)對(duì)象,結(jié)果必然為false。

對(duì)象內(nèi)容比較

如果希望進(jìn)行對(duì)象的內(nèi)容比較,即所有或指定的部分成員變量相同就判定兩個(gè)對(duì)象相同,則可以覆蓋重寫(xiě)equals方法。例如:

import java.util.Objects;

public class Person {   
    private String name;
    private int age;
    
    @Override
    public boolean equals(Object o) {
        // 如果對(duì)象地址一樣,則認(rèn)為相同
        if (this == o)
            return true;
        // 如果參數(shù)為空,或者類(lèi)型信息不一樣,則認(rèn)為不同
        if (o == null || getClass() != o.getClass())
            return false;
        // 轉(zhuǎn)換為當(dāng)前類(lèi)型
        Person person = (Person) o;
        // 要求基本類(lèi)型相等,并且將引用類(lèi)型交給java.util.Objects類(lèi)的equals靜態(tài)方法取用結(jié)果
        return age == person.age && Objects.equals(name, person.name);
    }
}

這段代碼充分考慮了對(duì)象為空、類(lèi)型一致等問(wèn)題,但方法內(nèi)容并不唯一。大多數(shù)IDE都可以自動(dòng)生成equals方法的代碼內(nèi)容。在IntelliJ IDEA中,可以使用Code菜單中的Generate…選項(xiàng),也可以使用快捷鍵alt+insert,并選擇equals() and hashCode()進(jìn)行自動(dòng)代碼生成。如下圖所示:

tips:Object類(lèi)當(dāng)中的hashCode等其他方法,有時(shí)間我再整理發(fā)出。

Objects類(lèi)

在剛才IDEA自動(dòng)重寫(xiě)equals代碼中,使用到了java.util.Objects類(lèi),那么這個(gè)類(lèi)是什么呢? 在JDK7添加了一個(gè)Objects工具類(lèi),它提供了一些方法來(lái)操作對(duì)象,它由一些靜態(tài)的實(shí)用方法組成,這些方法是null-save(空指針安全的)或null-tolerant(容忍空指針的),用于計(jì)算對(duì)象的hashcode、返回對(duì)象的字符串表示形式、比較兩個(gè)對(duì)象。 在比較兩個(gè)對(duì)象的時(shí)候,Object的equals方法容易拋出空指針異常,而Objects類(lèi)中的equals方法就優(yōu)化了這個(gè)問(wèn)題。方法如下:

public static boolean equals(Object a, Object b):判斷兩個(gè)對(duì)象是否相等。

我們可以查看一下源碼,學(xué)習(xí)一下:

public static boolean equals(Object a, Object b) {  
    return (a == b) || (a != null && a.equals(b));  
}

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

相關(guān)文章

  • Springboot中的@Conditional注解詳解

    Springboot中的@Conditional注解詳解

    這篇文章主要介紹了Springboot中的@Conditional注解詳解,@Conditional來(lái)源于spring-context包下的一個(gè)注解,Conditional中文是條件的意思,@Conditional注解它的作用是按照一定的條件進(jìn)行判斷,滿(mǎn)足條件給容器注冊(cè)bean,需要的朋友可以參考下
    2023-09-09
  • Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖

    Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的掃雷圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • 基于Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的示例代碼

    基于Mybatis實(shí)現(xiàn)動(dòng)態(tài)數(shù)據(jù)源切換的示例代碼

    在當(dāng)今的互聯(lián)網(wǎng)應(yīng)用中,微服務(wù)大行其道,隨著業(yè)務(wù)的發(fā)展和擴(kuò)展,單一的數(shù)據(jù)庫(kù)無(wú)法滿(mǎn)足日益增長(zhǎng)的數(shù)據(jù)需求,本文將基于 JDK17 + Spring Boot 3 和 MyBatis 框架實(shí)現(xiàn)動(dòng)態(tài)切換數(shù)據(jù)源功能,需要的朋友可以參考下
    2024-09-09
  • SpringBoot整合JWT Token的完整步驟

    SpringBoot整合JWT Token的完整步驟

    JSON Web Token是目前最流行的跨域認(rèn)證解決方案,適合前后端分離項(xiàng)目通過(guò)Restful API進(jìn)行數(shù)據(jù)交互時(shí)進(jìn)行身份認(rèn)證,這篇文章主要給大家介紹了關(guān)于SpringBoot整合JWT Token的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 記一次在idea離線(xiàn)使用maven問(wèn)題(推薦)

    記一次在idea離線(xiàn)使用maven問(wèn)題(推薦)

    這篇文章主要介紹了記一次在idea離線(xiàn)使用maven問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Spring?Boot?如何生成微信小程序短連接及發(fā)送短信在短信中打開(kāi)小程序操作

    Spring?Boot?如何生成微信小程序短連接及發(fā)送短信在短信中打開(kāi)小程序操作

    最近遇到這樣的需求需要發(fā)送短信,通過(guò)短信中的短連接打開(kāi)小程序操作,下面小編給大家分享Spring?Boot?如何生成微信小程序短連接發(fā)送短信在短信中打開(kāi)小程序操作,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • Java Scoket實(shí)現(xiàn)雙向通信代碼詳解

    Java Scoket實(shí)現(xiàn)雙向通信代碼詳解

    這篇文章主要介紹了Java Scoket實(shí)現(xiàn)雙向通信代碼詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 詳解java中jvm虛擬機(jī)棧的作用

    詳解java中jvm虛擬機(jī)棧的作用

    這篇文章主要介紹了jvm虛擬機(jī)棧的作用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • MybatisPlus使用聚合函數(shù)的示例代碼

    MybatisPlus使用聚合函數(shù)的示例代碼

    本文主要介紹了MybatisPlus使用聚合函數(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 淺談Springboot2.0防止XSS攻擊的幾種方式

    淺談Springboot2.0防止XSS攻擊的幾種方式

    本文主要介紹了Springboot2.0防止XSS攻擊的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08

最新評(píng)論

大理市| 永修县| 化隆| 准格尔旗| 三门县| 房产| 依安县| 政和县| 巴林右旗| 毕节市| 广宁县| 丹东市| 肇源县| 久治县| 靖安县| 丹寨县| 景宁| 广德县| 白银市| 辽宁省| 蒙阴县| 盐津县| 日照市| 南丰县| 汽车| 太仆寺旗| 轮台县| 英山县| 连南| 滨州市| 黑龙江省| 贺兰县| 竹溪县| 乐都县| 荔浦县| 博乐市| 旺苍县| 江都市| 泽普县| 琼中| 武平县|