Integer原始碼(toString)解析

2021-09-14 01:16:31 字數 936 閱讀 8077

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...