我們先看下面的例子:
public class demo
}
執行上面**,結果如下:
}上面**可以看到,直接給integer型別的變數賦值基本資料型別資料的操作底層使用的是valueof()
,所以只需要看該方法即可
public final class integer extends number implements comparable
private static class integercache catch( numberformatexception nfe)
}high = h;
cache = new integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new integer(j++);
// range [-128, 127] must be interned (jls7 5.1.7)
assert integercache.high >= 127;
} private integercache() {}}}
可以看到integer
預設先建立並快取-128 ~ 127
之間數的integer
物件,
當呼叫valueof
時如果引數在-128 ~ 127
之間則計算下標並從快取中返回,
否則建立乙個新的integer
物件。
JDK原始碼閱讀 Integer
先上一版字串轉數值的幾個方法的區別 parseint string s 解析字串數,10進製,返回int parseint string s,int radix 解析字串數,radix為指定進製,支援2 36進製 decode string nm 解析字串數,0開頭的為8進製,如010解析為2 0x...
Integer原始碼解析
public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...
Integer原始碼(toString)解析
public static string tostring int i 同樣,為了便於理解,我舉個具體的例子 integer.tostring 173 1 int size i 0 stringsize i 1 stringsize i 看這一行的stringsize i 方法 判斷這個value ...