03 java.lang.Integer 源码简单分析

前言:

说在最前,试分析了Object以及String 这些我们常使用的对象,发现Jdk 的开发人员在写一些方法的时候,想到的方便更加具体,也有些地方真的

有些看不懂,估计还是学的浅,但还是要尝试着去分析,毕竟没有什么事情是生来就会的,我们的试着去解决它,今天还是从我们的一个Integer出发,

也是我们最常用的一个类,int 基本类型的包装类

分别定义了Int 这个四个字节表示的数的能存储最大的值与最小的值 分别用十六进制表示

@Native public static final int   MIN_VALUE = 0x80000000;

    /**
     * A constant holding the maximum value an {@code int} can
     * have, 2<sup>31</sup>-1.
     */
    @Native public static final int   MAX_VALUE = 0x7fffffff;

//包装类的类型是一个基于int 的基本类型

public static final Class<Integer>  TYPE = (Class<Integer>) Class.getPrimitiveClass("int");

//将一个整数i 通过指定的基数 radix 也就是进制,比如10表示就是十进制 转换后是指定的字符串

举个例子

System.out.println(Integer.toString(10,2));//将10这个整数转换为2进制 结果:1010
public static String toString(int i, int radix) {

     //默认的进制 
if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) radix = 10; /* Use the faster version */ if (radix == 10) { return toString(i); }      //存放4个字节的二进制数组  char buf[] = new char[33];
     //判断是否是负数 
boolean negative = (i < 0); int charPos = 32;      //正数则取负值  if (!negative) { i = -i; }      //循环开始,进制转换 二进制 对2取余 十六进制对16取余数 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)); }

这里如果有疑惑请参考:https://baijiahao.baidu.com/s?id=1621423277747819472&wfr=spider&for=pc

猜你喜欢

转载自www.cnblogs.com/ChromeT/p/11681888.html