1. 程式人生 > >Java源碼——Integer

Java源碼——Integer

英語水平 中文 character 項目 區間 由於 源代碼 第一個 最大

  

  最近在研究java的源代碼,但是由於自己英語水平有限,所以想使用中文註釋的方式把源碼裏的方法全部重寫

  一遍,下面是樓主整理出來的一小部分。我把整體的項目托管到GitHub上了,歡迎大家前去交流學習。

   GitHub : https://github.com/15128928804/yuanMa

  

/**
* @Author:zhuangfei
* @Description:返回由第二個參數指定基數轉換為字符串格式的第一個參數
* 如果基數超過了Character的最小(-2)或最大(36)區間,會指定為10
* 如第一個參數為負,則會把它相應轉換後的ASCII參數前加上 ‘-’
* i :需要轉換的參數
* radix :指定的基數
* @Date:11:13 2017/11/29
*/
public static String toString(int i, int radix) {
if(radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) {
radix = 10;
}

if(radix == 10)
return toString(i);

char buf[] = new char[33];
boolean negative = (i < 0);
int charPos = 32;

if(!negative)
i = -i;

while (i <= -radix) {
buf[charPos--] = digits[-(i % radix)];
i = i / radix;
}
buf[charPos] = digits[-i];
if(negative) {
buf[--charPos] = ‘-‘;
}

return new String(buf, charPos, (33 - charPos));
}

/**
* @Author:zhuangfei
* @Description:返回指定參數的String格式,指定的整數參數轉換為有符號的小數返回
* i :指定參數
* @Date:11:28 2017/11/29
*/
public static String toString(int i) {
if(i == Integer.MIN_VALUE) {
return "-2147483648";
}
int size = (i < 0)? stringSize(-i) + 1: stringSize(i);
char[] buf = new char[size];
getChars(i, size, buf);
return new String(buf, true);
}

/**
* @Author:zhuangfei
* @Description:將整數放入數組中,字符被放置到緩沖區裏,然後從指定索引處最不重要
* 的數開始向後遍歷
* i :整數
* index :指定的索引
* buf :字符數組
* @Date:11:33 2017/11/29
*/
static void getChars(int i, int index, char[] buf) {
int q, r;
int charPos = index;
char sign = 0;

if (i < 0) {
sign = ‘-‘;
i = -i;
}

while (i >= 65536) {
q = i / 100;
r = i - ((q << 6) + (q << 5) + (q << 2));
i = q;
buf[--charPos] = DigitOnes[r];
buf[--charPos] = DigitTens[r];
}

for(;;) {
q = (i * 52429) >>> (16 + 3);
r = i - ((q << 3) + (q << 1));
buf[--charPos] = digits[r];
i = q;
if (i == 0) break;
}
if(sign != 0) {
buf[--charPos] = sign;
}
}
/**
* @Author:zhuangfei
* @Description:需要正數的參數
* x :正參
* @Date:11:42 2017/11/29
*/
static int stringSize(int x) {
for(int i = 0; ; i++) {
if(x <= sizeTable[i]) {
return i + 1;
}
}
}

Java源碼——Integer