Integer 的緩存:首先說的Integer的緩存問題。先列舉一下代碼。 緩存
//////////////////////////////////////////////////////////////////////////////////////////////// 咱們發現,竟然出現了不一樣的狀況。當值爲100的時候,兩個引用竟然是相同的。當值爲128的時候,兩個引用竟然不相同了。這是什麼狀況呢?spa
要知道這個問題的緣由,咱們首先得了解一下Integer這個包裝類的源代碼。code
從這裏能夠看出,Integer包裝類裏面若是值爲【-128,127】範圍內的話,那麼就直接從緩存裏面取值。而JVM在初始化的時候,就已經將【-128,127】的值初始化了,也就是說,後續的Integer若是值是在這個範圍內的話,那麼獲取的都是同一個對象引用了。cdn
若是不在這個範圍內,那麼就是傳統的獲取一個新的對象了。固然即便是在這個取值範圍內,可是若是也經過new的方式獲取的值,也一樣獲取的是不一樣的對象了。例如:對象
Integer a=new Integer(100);
Integer b=new Integer(100);
複製代碼
可是a==b來判斷的話,會發現值爲false。這是由於這兩個對象都是new出來的,和Integer的緩存機制沒有關係了。blog