Integer的一个toString方法的源码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);
} 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));
    }
其中下面这句我实在是看不明白,这到底是怎么个原理,也就是说为什么这样来循环,请详细讲解下while (i <= -radix) {
    buf[charPos--] = digits[-(i % radix)];
    i = i / radix;
}
buf[charPos] = digits[-i];

解决方案 »

  1.   

    啊,名字起错了,是toString()源码
      

  2.   

    其中digits定义如下final static char[] digits = {
    '0' , '1' , '2' , '3' , '4' , '5' ,
    '6' , '7' , '8' , '9' , 'a' , 'b' ,
    'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
    'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
    'o' , 'p' , 'q' , 'r' , 's' , 't' ,
    'u' , 'v' , 'w' , 'x' , 'y' , 'z'
        };
      

  3.   

    radix应该是当前进制; i % radix是进制转换; digits是转换成该进制数据
    我猜的,没仔细看