public static string tostring(int i)
同樣,為了便於理解,我舉個具體的例子
integer.tostring(173)
1、** int size = (i < 0) ? stringsize(-i) + 1 : stringsize(i);**
看這一行的stringsize(i)方法
//判斷這個value 是幾位數
static int stringsize(int x)
final static int sizetable = ;
173<=sizetable[0]//false
173<=sizetable[1]//false
173<=sizetable[2]//true
所以返回3;所以int size = 3;
2、核心方法getchars(int,int,char)
用於獲取解析後的字元陣列
static void getchars(int i, int index, char buf)
// generate two digits per iteration
while (i >= 65536)
// fall thru to fast mode for smaller numbers
// assert(i <= 65536, i);
//當傳入的值<=65536時
for (;;)
if (sign != 0)
}
這個方法很長,現在我們傳入的值是173,所以只分析下面這一段**:
for (;;)
然後是迴圈,最後buf = ['1','7','3'] Integer原始碼解析
public class test else integer i3 200 integer i4 200 if i3 i4 else 結果為 原因integer 類會快取 128 到 127 之間的整數 但是如果new interger的話就是不同的物件了 源 分析 如果是在 128到正的127之間...
Integer原始碼學習筆記
1 public final class integer extends number implements comparable2 tostring 方法先得到引數i的長度,然後以該長度生成char型別的buf陣列,最後以該buf陣列作為引數呼叫new string buf,true 生成乙個st...
JDK原始碼閱讀 Integer
先上一版字串轉數值的幾個方法的區別 parseint string s 解析字串數,10進製,返回int parseint string s,int radix 解析字串數,radix為指定進製,支援2 36進製 decode string nm 解析字串數,0開頭的為8進製,如010解析為2 0x...