四、方法
- toString
三个方法,其中两个static方法。1、public String toString():该方法内部使用toString(int i)实现。2、public static String toString(int i):该方法内部使用stringSize方法巧妙的获取入参的size,然后用getChars把入参转换成字符数组,最后new一个新String对象。
3、public static String toString(int i, int radix):参入radix为进制数,该方法支持2-36进制字符串的转换,radix大于36或小于2时则转换成10进制的字符串,转换方法直接用toString(int i),其它进制度的转换方法则是先初始化一个33位的字符数组然后把参数i转换成负数,然后对数组从高到低逐个计算出对应的字符,如果是负数最后在加上“-”号,最后把有值的字符位实例化一个字符串对象。源码如下:
- equals
- hashCode:Integer 类的hashCode直接返回其 int 类型的数据
- parseInt
两个静态方法:1、public static int parseInt(String s) throws NumberFormatException内部使用parseInt(String s, int radix)实现2、public static int parseInt(String s, int radix) throws NumberFormatException两个参数第一个为数字字符串,第二个为数字的进制数。如果s为null或radix大于36或小于2抛出对应异常。转换实现先判断正负号和然后计算数值,计算数值使用Character.digit(char ch, int radix)实现。源码如下:
- parseUnsignedInt
v
- remainderUnsigned、divideUnsigned:无符号求余和商
- compare、compareTo、compareUnsigned
compareUnsigned(无符号比较)、compareTo使用compare实现。
compare实现如下:
compareUnsigned:
MIN_VALU补码为:1000 0000 0000 0000 0000 0000 0000 0000
所以x+MIN_VALU只是改变最高位符号,其它为不影响,所以负数高位变0,正数高位变1,如果是正负数比较永远会比正数大,如果都是正数则不影响。
- valueOf
1、public static Integer valueOf(int i):实现如下,>=-128切<=127之间的数值在cache中取值,其它的new一个新Integer对象
2、public static Integer valueOf(String s) throws NumberFormatException3、public static Integer valueOf(String s, int radix) throws NumberFormatException以上两个方法内部使用parseInt实现
- byteValue、shortValue、intValue、longValue、floatValue、doubleValue,除intValue直接获取int值之外,其它的通过int值强转得到
1、public static String toHexString(int i);返回int的16进制无符号字符串,内部用toUnsignedString2、public static String toOctalString(int i);返回int的8进制无符号字符串,内部用toUnsignedString3、public static String toBinaryString(int i);返回int的2进制无符号字符串,内部用toUnsignedString4、private static String toUnsignedString(int i, int shift),转换int为无符号字符串,源码如下图,去掉符号位的计算,从低位高位遍历赋值,最后返回一个新String对象
- getChars
static void getChars(int i, int index, char[] buf);获取字符数组,源码如下,当i >= 65536时,通过计算除以100的余数,用DigitOnes,DigitTens两个数组获取低位的字符value,当i < 65536时, 通过计算除以10的余数( q = (i * 52429) >>> (16+3)相当于i*0.1,这里为什么这么用有待去百度查证下,用digits获取数组的字符value