天天看點

Integer IntegerCache源碼

先看一段測試結果:

JDK的源碼如下:

Integer IntegerCache源碼
Integer IntegerCache源碼

發現裡面另有玄機,多了個IntegerCache類:

Integer IntegerCache源碼
Integer IntegerCache源碼

原來Integer把-128到127(可調)的整數都提前執行個體化了。

這就解釋了答案,原來你不管建立多少個這個範圍内的Integer用ValueOf出來的都是同一個對象。

但是為什麼JDK要這麼多此一舉呢? 我們仔細想想, 淘寶的商品大多數都是100以内的價格, 一天背景伺服器會new多少個這個的Integer, 用了IntegerCache,就減少了new的時間也就提升了效率。同時JDK還提供cache中high值得可配置,

這無疑提高了靈活性,友善對JVM進行優化。