成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Java Object類(lèi)方法分析

zhisheng / 2082人閱讀

摘要:類(lèi)方法分析聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處類(lèi)簡(jiǎn)介類(lèi)是所有類(lèi)的父類(lèi),在中只有基本數(shù)據(jù)類(lèi)型不是對(duì)象。對(duì)于所有數(shù)組類(lèi)型對(duì)象類(lèi)型基本數(shù)據(jù)類(lèi)型數(shù)組都繼承于類(lèi)方法類(lèi)中通過(guò)判斷兩個(gè)對(duì)象是否具有相同引用,從而判斷兩個(gè)對(duì)象是否相同子類(lèi)只要重寫(xiě)方法,就

Java Object類(lèi)方法分析 聲明

文章均為本人技術(shù)筆記,轉(zhuǎn)載請(qǐng)注明出處https://segmentfault.com/u/yzwall

Object類(lèi)簡(jiǎn)介

Object類(lèi)是所有類(lèi)的父類(lèi),在Java中只有基本數(shù)據(jù)類(lèi)型不是對(duì)象。對(duì)于所有數(shù)組類(lèi)型(對(duì)象類(lèi)型&&基本數(shù)據(jù)類(lèi)型數(shù)組)都繼承于Object類(lèi);

equals方法

Object類(lèi)中通過(guò)判斷兩個(gè)對(duì)象是否具有相同引用,從而判斷兩個(gè)對(duì)象是否相同;
子類(lèi)只要重寫(xiě)equals方法,就必須重寫(xiě)hashCode方法

// in java.lang.Object
public boolean equals(Object obj) {
    return (this == obj);
}
重寫(xiě)equals方法原則:

自反性:A.equals(A)返回true;

對(duì)稱(chēng)性:A.equals(B)結(jié)果和B.equals(A)相同;

傳遞性:A.equals(B)為true,B.equals(C)為true,則A.equals(C)為true

一致性:對(duì)于非null引用A,B, 只要equals()比較操作所用到對(duì)象信息不變,多次調(diào)用A.equals(B),結(jié)果一致;

對(duì)于任何非null引用,x.equals(null)必須返回false;

重寫(xiě)equals方法時(shí),參數(shù)類(lèi)型必須為Object類(lèi)型

重寫(xiě)equals方法示例
class myObject {
    private String name;
    private int age;
    ...
    public getName() {
        return this.name;
    }
    public getAge() {
        return this.age;
    }
}

/**
 * 重寫(xiě)equals方法demo步驟
 * Effective Java中推薦方式
 */
public boolean equals(Object x) {
    // 1. 檢查x和this是否引用同一個(gè)對(duì)象
    if (x == this) {
        return true;
    }
    
    // 2. 檢查x對(duì)象類(lèi)型是否是myObject派生
    if (!(x instanceof myObject)) {
        return false;
    }

    // 3. 比較數(shù)據(jù)域
    // 經(jīng)過(guò)1,2檢查,將參數(shù)轉(zhuǎn)換為正確類(lèi)型
    myObject o = (myObject)(x);
    return this.name.equals(x.getName()) && this.age == (x.getAge());
}
hashCode()方法

hashCode方法返回對(duì)象的散列碼,相等對(duì)象必須返回相等的hashCode,不同對(duì)象的hashCode盡可能不相等;

// in java.lang.Object
public native int hashCode();
重寫(xiě)equals時(shí)總要重寫(xiě)hashCode

重寫(xiě)equals不重寫(xiě)hashCode,會(huì)導(dǎo)致“不相等對(duì)象擁有相同的hashCode”,導(dǎo)致集合類(lèi)HashMap,HashSetHashtable無(wú)法工作;極端情況下,在散列表中使所有對(duì)象的hashCode都相等,所有對(duì)象都被映射到同一個(gè)桶中,散列表退化成鏈表;

當(dāng)兩個(gè)對(duì)象調(diào)用equal返回true,則兩個(gè)對(duì)象各自調(diào)用hashCode()返回相同hashCode;

當(dāng)兩個(gè)對(duì)象調(diào)用equal返回false, 兩個(gè)對(duì)象各自調(diào)用hashCode()返回的hashCode可以相同(散列沖突不能完全避免

toString()方法

Object類(lèi)中toString方法,輸出對(duì)象的“對(duì)象類(lèi)名@散列碼”;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/67023.html

相關(guān)文章

  • 源碼|jdk源碼之Object及裝箱類(lèi)分析

    摘要:作為條件變量的的不僅可以認(rèn)為內(nèi)嵌了一把鎖,還內(nèi)嵌了一個(gè)條件變量。操作條件變量的函數(shù)將當(dāng)前線程在條件變量上阻塞,一般是為了等待其他線程的某件事情執(zhí)行完成。其它裝箱類(lèi)其它裝箱類(lèi)的代碼這里就不分析了。重點(diǎn)關(guān)注下各裝箱類(lèi)的緩存范圍。 jdk源碼讀到現(xiàn)在這里,重要的集合類(lèi)也讀了一部分了。集合類(lèi)再往下讀的話,就要涉及到兩個(gè)方向。第一,是比較典型的但是不常用的數(shù)據(jù)結(jié)構(gòu),這部分我準(zhǔn)備將數(shù)據(jù)結(jié)構(gòu)復(fù)習(xí)、回...

    VioletJack 評(píng)論0 收藏0
  • 詳細(xì)深入分析 Java ClassLoader 工作機(jī)制

    摘要:作用負(fù)責(zé)將加載到中審查每個(gè)類(lèi)由誰(shuí)加載父優(yōu)先的等級(jí)加載機(jī)制將字節(jié)碼重新解析成統(tǒng)一要求的對(duì)象格式類(lèi)結(jié)構(gòu)分析為了更好的理解類(lèi)的加載機(jī)制,我們來(lái)深入研究一下和他的方法。就算兩個(gè)是同一份字節(jié)碼,如果被兩個(gè)不同的實(shí)例所加載,也會(huì)認(rèn)為它們是兩個(gè)不同。 申明:本文首發(fā)于 詳細(xì)深入分析 ClassLoader 工作機(jī)制 ,如有轉(zhuǎn)載,注明原出處即可,謝謝配合。 什么是 ClassLoader ? 大家...

    mdluo 評(píng)論0 收藏0
  • Java 代理模式與 AOP

    摘要:本文首發(fā)于作者最近在學(xué),研究了下和代理模式,寫(xiě)點(diǎn)心得和大家分享下。所以下面來(lái)重點(diǎn)分析下代理模式。這里代理模式分為靜態(tài)代理和動(dòng)態(tài)代理兩種,我們分別來(lái)看下。代理模式,代理,意味著有一方代替另一方完成一件事。 本文首發(fā)于 https://jaychen.cc作者 jaychen 最近在學(xué) Spring,研究了下 AOP 和代理模式,寫(xiě)點(diǎn)心得和大家分享下。 AOP 先說(shuō)下AOP,AOP 全稱(chēng) ...

    jk_v1 評(píng)論0 收藏0
  • #yyds干貨盤(pán)點(diǎn)#Java ASM系列:(091)冗余變量分析

    摘要:程序中定義的變量是存儲(chǔ)在當(dāng)中。判斷和是否相同,如果相同,那么表示是冗余的變量。示例冗余變量分析預(yù)期目標(biāo)在下面的代碼中,會(huì)提示和局部變量是多余的我們的預(yù)期目標(biāo)識(shí)別出和是冗余變量。 本文屬于Java ASM系列三:Tree API當(dāng)中的一篇。 1. 如何判斷變量是否冗余 如果在IntelliJ IDEA當(dāng)中編寫(xiě)如下的代碼,它會(huì)提示str2和str3局部變量是多余的: ...

    mengbo 評(píng)論0 收藏0
  • 人人都會(huì)設(shè)計(jì)模式:代理模式--Proxy

    摘要:話說(shuō)誰(shuí)還干類(lèi)似的事,就在文章末尾點(diǎn)個(gè)贊代銷(xiāo)店等其實(shí)就是現(xiàn)在的商店,以前小的時(shí)候聽(tīng)家鄉(xiāng)人叫代銷(xiāo)店,也是一種代理模式??梢哉f(shuō)是系統(tǒng)中最重要的架構(gòu)之一。 showImg(https://segmentfault.com/img/remote/1460000012278678?w=1240&h=469); PS:轉(zhuǎn)載請(qǐng)注明出處作者: TigerChain地址: http://www.jians...

    tuniutech 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<