先上原始碼
/**
* 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...