久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

關(guān)于Integer大小比較的問題

 暖風醉伊人 2014-08-29
昨天跟朋友一起吃飯,他說到兩個Integer類型值比較是否相等的問題,。經(jīng)理也在這里把java的Integer值比較的問題拿出來說一說,。因為在面試的時候這個是經(jīng)常遇到的問題。
首先給大家看一個例子:
 1public class Test {
 2
 3    /**
 4     * 關(guān)于Integer大小比較問題
 5     * @author 經(jīng)理
 6     */

 7    public static void main(String[] args) {
 8        Integer a = 10;
 9        Integer b = 10;
10        System.out.println("a==b : " + String.valueOf(a==b));
11        System.out.println("a.equals(b) : " + String.valueOf(a.equals(b)));
12    }

13}

14
運行一下,,在控制臺得到的結(jié)果是這樣的
a==b : true
a.equals(b) : 
true

當是當我們變換一下值
 1public class Test {
 2
 3    /**
 4     * 關(guān)于Integer大小比較問題
 5     * @author 經(jīng)理
 6     */

 7    public static void main(String[] args) {
 8        Integer a = 1000;
 9        Integer b = 1000;
10        System.out.println("a==b : " + String.valueOf(a==b));
11        System.out.println("a.equals(b) : " + String.valueOf(a.equals(b)));
12    }

13}

運行一下,,控制臺的結(jié)果又是
a==b : false
a.equals(b) : 
true

這是什么原因呢?我當時也有點犯糊涂,。有點沖動就直接開源碼看了,。
實際上在我們用Integer a = 數(shù)字;來賦值的時候Integer這個類是調(diào)用的public static Integer valueOf(int i)這個方法,。
1public static Integer valueOf(int i) {
2        if(i >= -128 && i <= IntegerCache.high)
3            return IntegerCache.cache[i + 128];
4        else
5            return new Integer(i);
6    }
我們來看看ValueOf(int i)的代碼,,可以發(fā)現(xiàn)他對傳入?yún)?shù)i做了一個if判斷。在-128<=i<=127的時候是直接用的int原始數(shù)據(jù)類型,,而超出了這個范圍則是new了一個對象,。我們知道"=="符號在比較對象的時候是比較的內(nèi)存地址,而對于原始數(shù)據(jù)類型是直接比對的數(shù)據(jù)值,。那么這個問題就解決了,。
至于為什么用int型的時候值會在-128<=i<=127范圍呢呢?我們知道八位二進制的表示的范圍正好就是-128到127。大概就是因為這吧,。

把平時出現(xiàn)的問題記錄下來,,自己就可以一點一點進步了。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多