java integer源码_Java源码——Integer

最近在研究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;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值