Integer的快取( 128到127)

2021-07-22 08:10:50 字數 859 閱讀 5461

先上原始碼

/**

* returns an instance representing the specified

* value. if a new instance is not

* required, this method should generally be used in preference to

* the constructor , as this method is likely

* to yield significantly better space and time performance by

* caching frequently requested values.

** this method will always cache values in the range -128 to 127,

* inclusive, and may cache other values outside of this range.

** @param i an value.

* @return an instance representing .

* @since 1.5

*/public static integer valueof(int i)

這兒的integercache是乙個靜態的integer陣列,在類載入時就將-128 到 127 的integer物件建立了,並儲存在cache陣列中,一旦程式呼叫valueof 方法,如果i的值是在-128 到 127 之間就直接在cache快取陣列中去取integer物件。而不在此範圍內的數值則要new到堆中了。

再看其它的包裝器:

Integer 的快取問題

integer 的快取 首先說的integer的快取問題。先列舉一下 我們發現,居然出現了不同的情況。當值為100的時候,兩個引用居然是相同的。當值為128的時候,兩個引用居然不相同了。這是什麼情況呢?要知道這個問題的原因,我們首先得了解一下integer這個包裝類的源 從這裡可以看出,intege...

Integer類的快取機制

檢視integer的原始碼,就會發現裡面有個靜態內部類。該類的作用是將數值等於 128 127 預設 區間的integer例項快取到cache陣列中。通過valueof 方法很明顯發現,當再次建立值在 128 127區間的integer例項時,會復用快取中的例項,也就是直接指向快取中的integer...

Integer 中的快取類IntegerCache

題目 public class test 結果是 true false true可是為什麼呢?翻閱dk的原始碼,發現 public static integer valueof string s throws numberformatexception public static integer v...