java Integer parseInt()

先來一段代碼,代碼很簡單的,以下:java

public static void main(String[] args) {
        Integer a = Integer.parseInt("3");
        Integer b = Integer.parseInt("3");
        Integer c = Integer.parseInt("184");
        Integer d = Integer.parseInt("184");
        System.out.println(a == b);
        System.out.println(c == d);
    }

看到代碼的各位,以爲輸出應該是什麼樣子的呢?false, false 或者 true,true,不知道的請自行調試。。。緩存

這裏代碼輸出的結果是:true, falsespa

why?當我看到這個結果時,這是第一反應(果真我是菜鳥呀……),在網上搜了一下緣由,本人尚未看過Integer.parseInt()的源碼(粗略瞄了一眼,表示沒看懂)。調試

這個大概的緣由是:java會把經常使用的整數(-128 - 127)作一個緩存,因此在調用parseInt(「3」)時,會從緩存中取到相應的數值,而大於127緩存中沒有數據,因此上面的c和d會是兩個不一樣的引用,因此不等。(這是本人的初步理解,記下來之後能夠深刻去看看)。code

 

有大神用源碼解釋一下的麼,哈哈……blog

相關文章
相關標籤/搜索