最近在研究java的源代码,但是由于自己英语水平有限,所以想使用中文注释的方式把源码里的方法全部重写

  一遍,下面是楼主整理出来的一小部分。我把整体的项目托管到GitHub上了,欢迎大家前去交流学习。

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

  

  1. /**
    * @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;
    }
  2.  
  3. if(radix == 10)
    return toString(i);
  4.  
  5. char buf[] = new char[33];
    boolean negative = (i < 0);
    int charPos = 32;
  6.  
  7. if(!negative)
    i = -i;
  8.  
  9. while (i <= -radix) {
    buf[charPos--] = digits[-(i % radix)];
    i = i / radix;
    }
    buf[charPos] = digits[-i];
    if(negative) {
    buf[--charPos] = '-';
    }
  10.  
  11. return new String(buf, charPos, (33 - charPos));
    }
  12.  
  13. /**
    * @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);
    }
  14.  
  15. /**
    * @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;
  16.  
  17. if (i < 0) {
    sign = '-';
    i = -i;
    }
  18.  
  19. while (i >= 65536) {
    q = i / 100;
    r = i - ((q << 6) + (q << 5) + (q << 2));
    i = q;
    buf[--charPos] = DigitOnes[r];
    buf[--charPos] = DigitTens[r];
    }
  20.  
  21. 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. myeclipse通过数据表生成jpa或hibernate实体---https://blog.csdn.net/partner4java/article/details/8560289

    myeclipse通过数据表生成jpa或hibernate实体-----https://blog.csdn.net/partner4java/article/details/8560289

  2. Codeforces Round #372 (Div. 2) A .Crazy Computer/B. Complete the Word

    Codeforces Round #372 (Div. 2) 不知不觉自己怎么变的这么水了,几百年前做A.B的水平,现在依旧停留在A.B水平.甚至B题还不会做.难道是带着一种功利性的态度患得患失?总共 ...

  3. Delphi简单的数据操作类

    unit MyClass; uses   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,   VCL ...

  4. ESG操作指南

    ESG使用指南:1.ESG操作文档网站:ESG有个网站,是专门的操作文档网站,因为ESG三个环境,流程各不一样.地址:http://10.20.12.90:20567/esg-help-doc/2.E ...

  5. pycharm内存不足时如何修改设置?

    Help->Find Action->(type "VM Options")->(Click)"Edit Custom VM Options" ...

  6. Apache2 Web 服务器

    Apache2 Web 服务器的安装 sudo apt install apache2 -y 当安装Apache2包之后,Apache2相关的服务是启用的,并在重启后自动运行.在某些情况下如果你的Ap ...

  7. Spark修炼之道(基础篇)——Linux大数据开发基础:第二节:Linux文件系统、文件夹(一)

    本节主要内容 怎样获取帮助文档 Linux文件系统简单介绍 文件夹操作 訪问权限 1. 怎样获取帮助文档 在实际工作过程其中,常常会忘记命令的使用方式.比如ls命令后面能够跟哪些參数,此时能够使用ma ...

  8. HDOJ 5381 The sum of gcd 莫队算法

    大神题解: http://blog.csdn.net/u014800748/article/details/47680899 The sum of gcd Time Limit: 2000/1000 ...

  9. Go语言核心之美 3.2-slice切片

    Slice(切片)是长度可变的元素序列(与之相应,上一节中的数组是不可变的),每一个元素都有同样的类型.slice类型写作[]T.T是元素类型.slice和数组写法非常像,差别在于slice没有指定长 ...

  10. 华为云分布式数据库中间件DDM和开源MyCAT对比

    前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...