java Integer parseInt()


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

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, false

why?當我看到這個結果時,這是第一反應(果然我是菜鳥呀……),在網上搜了一下原因,本人還沒有看過Integer.parseInt()的源碼(粗略瞄了一眼,表示沒看懂)。

這個大概的原因是:java會把常用的整數(-128 - 127)做一個緩存,所以在調用parseInt(“3”)時,會從緩存中取到相應的數值,而大於127緩存中沒有數據,所以上面的c和d會是兩個不同的引用,所以不等。(這是本人的初步理解,記下來以后可以深入去看看)。

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM