Integer的緩存數組

package com.company;

/**
 * Integer的緩存數組
 */
public class CacheArr {
    public static void main(String[] args) {
        Integer a = 100;
        Integer b = 100;
        Integer c = 200;
        Integer d =200;

        System.out.println(a==b);//true
        System.out.println(c==d);//false

        System.out.println(a.equals(b));//true
        System.out.println(c.equals(d));//true
    }
}

直接上代碼,主要是面試的時候遇到了這個問題。

查資料可以知道Integer有緩存數組,即-128<=value<=127,這個範圍的值是從緩存數組中獲取Integer對象。,除了這個範圍,Integer的“==”方法是比較地址的。而Integer的equals方法則不會有這些問題,是直接字面上的比較。

因此使用Integer做比較的時候,需要區分是否超過了緩存數組的區域。

public boolean equals(Object obj) {
        if (obj instanceof Integer) {
            return value == ((Integer)obj).intValue();
        }
        return false;
    }

Integer的equals方法就是簡單的值比較了,哈哈哈哈哈~~~~

不積跬步,無以至千里。。。。。。

爲啥我最近總有一種職業生涯快走到頭了的感覺??有沒有人和我一樣的困惑,對於一個非985,非211,非科班出身的女程序猿,有木有人和我一樣迷茫???

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章