最近在研究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的更多相关文章

  1. Java源码 Integer.bitCount实现过程

    public static int bitCount(int i) { // HD, Figure 5-2 i = i - ((i >>> 1) & 0x55555555); ...

  2. Java源码解读(一)——HashMap

    HashMap作为常用的一种数据结构,阅读源码去了解其底层的实现是十分有必要的.在这里也分享自己阅读源码遇到的困难以及自己的思考. HashMap的源码介绍已经有许许多多的博客,这里只记录了一些我看源 ...

  3. 24点扑克牌游戏——(含java源码)(GUI实现)

    给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24. 括号的放置即为决定哪几个数先进行计算.所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间 ...

  4. 从Java源码到Java字节码

    Java最主流的源码编译器,javac,基本上不对代码做优化,只会做少量由Java语言规范要求或推荐的优化:也不做任何混淆,包括名字混淆或控制流混淆这些都不做.这使得javac生成的代码能很好的维持与 ...

  5. Java源码系列1——ArrayList

    本文简单介绍了 ArrayList,并对扩容,添加,删除操作的源代码做分析.能力有限,欢迎指正. ArrayList是什么? ArrayList 就是数组列表,主要用来装载数据.底层实现是数组 Obj ...

  6. Java源码系列2——HashMap

    HashMap 的源码很多也很复杂,本文只是摘取简单常用的部分代码进行分析.能力有限,欢迎指正. HASH 值的计算 前置知识--位运算 按位异或操作符^:1^1=0, 0^0=0, 1^0=0, 值 ...

  7. Java 源码刨析 - HashMap 底层实现原理是什么?JDK8 做了哪些优化?

    [基本结构] 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的: JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 并且容量大于 64 时,链表结构会转换成红黑树结构,它的 ...

  8. java源码——文件读写和单词统计

    本文要解决的问题:"键盘输入一段英语语句,将这段话写入content.txt中,然后输出这段话,并且统计语句中英文单词的数目以及各个单词出现的次数." 分析问题知,核心是文件读写和 ...

  9. java源码——0~9十个数字不重复地使用使加法表达式成立

    这个问题是在我写个的几个博客里较为复杂的一个.首先,先看看整个问题的表述. 星号表示0~9的一个数字,而且不允许重复,使得下面的加法表达式成立.输出所有结果. ※ ※ ※ ※ ※    +  2   ...

随机推荐

  1. 字符串类String类的判断功能

    StringDemo.java /* * Object:是类层级结构中的根类,所有的类都直接或间接的继承自该类. * 如果一个方法的形式参数是Object,那么这里我们就可以传递它的任意的子类对象. ...

  2. <<编程之美>> -- 队列中取最大值操作的问题

    不得不说编程之美是一本好书,虽然很多题目在做acm中的过程中遇到过,不过还是有很多值得思考的地方 这是今天在编程之美上看到的一个问题,对于栈转化成队列的一个思考 平时都太过依赖c++内函数库中的栈和队 ...

  3. [BZOJ3932] [CQOI2015]任务查询系统(主席树 || 树状数组 套 主席树 + 差分 + 离散化)

    传送门 看到这个题有个很暴力的想法, 可以每一个时间点都建一颗主席树,主席树上叶子节点 i 表示优先级为 i 的任务有多少个. 当 x 到 y 有个优先级为 k 的任务时,循环 x 到 y 的每个点, ...

  4. [BZOJ1179] [Apio2009]Atm(tarjan缩点 + spfa)

    传送门 题意 N个点M条边的有向图 每个点有点权 从某一个结点出发 问能获得的最大点权和 一个点的点权最多被计算一次 N<=500000 M<=500000 思路 先tarjan缩点,然后 ...

  5. POJ 3268_Silver Cow Party

    题意: n个地方,标号1~n,每个地方都有一头牛,现在要他们都去往标号为x的地方,再从x返回,每条道路都是单向的,求所有牛走的来回的最短路中的最大值. 分析: 注意在求每头牛走到x时,挨个算肯定超时, ...

  6. Elasticsearch自定义客户端(TransportClient)资源池

    前言: java中调用TransportClient时,我们一般都会设置成单例,为了避免多次的创建与关闭造成的内存占用及关闭缓慢问题.而TransportClient本身也是实现了线程池threadP ...

  7. JSP的隐藏对象

    以下内容引用自http://wiki.jikexueyuan.com/project/jsp/implicit-objects.html: JSP隐式对象是Java对象,JSP容器使隐式对象在每一个页 ...

  8. laralvel 关系多对多

  9. java STW stop the world 哈哈就是卡住了

    java  STW  stop the world 哈哈就是卡住了 学习了:http://www.jb51.net/article/125400.htm

  10. HDU 4968(杭电多校#9 1009题)Improving the GPA (瞎搞)

    题目地址:HDU 4968 这题的做法是全部学科的学分情况枚举,然后推断在这样的情况下是否会符合平均分. 直接暴力枚举就可以. 代码例如以下: #include <cstring> #in ...