国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Java Object類方法分析

zhisheng / 2070人閱讀

摘要:類方法分析聲明文章均為本人技術筆記,轉載請注明出處類簡介類是所有類的父類,在中只有基本數據類型不是對象。對于所有數組類型對象類型基本數據類型數組都繼承于類方法類中通過判斷兩個對象是否具有相同引用,從而判斷兩個對象是否相同子類只要重寫方法,就

Java Object類方法分析 聲明

文章均為本人技術筆記,轉載請注明出處https://segmentfault.com/u/yzwall

Object類簡介

Object類是所有類的父類,在Java中只有基本數據類型不是對象。對于所有數組類型(對象類型&&基本數據類型數組)都繼承于Object類;

equals方法

Object類中通過判斷兩個對象是否具有相同引用,從而判斷兩個對象是否相同;
子類只要重寫equals方法,就必須重寫hashCode方法

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

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

對稱性:A.equals(B)結果和B.equals(A)相同;

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

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

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

重寫equals方法時,參數類型必須為Object類型

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

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

    // 3. 比較數據域
    // 經過1,2檢查,將參數轉換為正確類型
    myObject o = (myObject)(x);
    return this.name.equals(x.getName()) && this.age == (x.getAge());
}
hashCode()方法

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

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

重寫equals不重寫hashCode,會導致“不相等對象擁有相同的hashCode”,導致集合類HashMapHashSetHashtable無法工作;極端情況下,在散列表中使所有對象的hashCode都相等,所有對象都被映射到同一個桶中,散列表退化成鏈表;

當兩個對象調用equal返回true,則兩個對象各自調用hashCode()返回相同hashCode;

當兩個對象調用equal返回false, 兩個對象各自調用hashCode()返回的hashCode可以相同(散列沖突不能完全避免

toString()方法

Object類中toString方法,輸出對象的“對象類名@散列碼”;

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/67023.html

相關文章

  • 源碼|jdk源碼之Object及裝箱分析

    摘要:作為條件變量的的不僅可以認為內嵌了一把鎖,還內嵌了一個條件變量。操作條件變量的函數將當前線程在條件變量上阻塞,一般是為了等待其他線程的某件事情執行完成。其它裝箱類其它裝箱類的代碼這里就不分析了。重點關注下各裝箱類的緩存范圍。 jdk源碼讀到現在這里,重要的集合類也讀了一部分了。集合類再往下讀的話,就要涉及到兩個方向。第一,是比較典型的但是不常用的數據結構,這部分我準備將數據結構復習、回...

    VioletJack 評論0 收藏0
  • 詳細深入分析 Java ClassLoader 工作機制

    摘要:作用負責將加載到中審查每個類由誰加載父優先的等級加載機制將字節碼重新解析成統一要求的對象格式類結構分析為了更好的理解類的加載機制,我們來深入研究一下和他的方法。就算兩個是同一份字節碼,如果被兩個不同的實例所加載,也會認為它們是兩個不同。 申明:本文首發于 詳細深入分析 ClassLoader 工作機制 ,如有轉載,注明原出處即可,謝謝配合。 什么是 ClassLoader ? 大家...

    mdluo 評論0 收藏0
  • Java 代理模式與 AOP

    摘要:本文首發于作者最近在學,研究了下和代理模式,寫點心得和大家分享下。所以下面來重點分析下代理模式。這里代理模式分為靜態代理和動態代理兩種,我們分別來看下。代理模式,代理,意味著有一方代替另一方完成一件事。 本文首發于 https://jaychen.cc作者 jaychen 最近在學 Spring,研究了下 AOP 和代理模式,寫點心得和大家分享下。 AOP 先說下AOP,AOP 全稱 ...

    jk_v1 評論0 收藏0
  • #yyds干貨盤點#Java ASM系列:(091)冗余變量分析

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

    mengbo 評論0 收藏0
  • 人人都會設計模式:代理模式--Proxy

    摘要:話說誰還干類似的事,就在文章末尾點個贊代銷店等其實就是現在的商店,以前小的時候聽家鄉人叫代銷店,也是一種代理模式。可以說是系統中最重要的架構之一。 showImg(https://segmentfault.com/img/remote/1460000012278678?w=1240&h=469); PS:轉載請注明出處作者: TigerChain地址: http://www.jians...

    tuniutech 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<