标签:
最近想换工作,bat等一线互联网公司都面了个遍,被轮流虐了无数遍之后发现欠缺很多,总结一下:
1.工作中只知道尽快的完成任务,实现功能,很多时候想到一种解决方案就下手去干了,是不是最优方案、数据量大了之后的性能问题、并发安全问题等都欠考虑。
2.本身不是计算机科班出身,基础薄弱,线程、锁、网络等计算机基础掌握不牢,源码看的偏少,很多常用的类都没仔细看过。
3.数据结构和算法功底差,只能写个最简单的冒泡排序。。最多再能写个汉诺塔之类的递归。
问题多多,好在一次腾讯面试的时候,面试官大姐指点说可以多看点源码,可以了解底层是怎么实现的,然后考虑为什么这么实现,举一反三,再想想如果自己实现的话应该怎么做,受到启发之后觉得这确实是一个好办法,于是决定从今天起每天读点源码(周六日要打球,身体是革命的本钱),从JDK源码开始吧。
Integer
进制转换方法,toString(int i,int radix)
首先定义好所有可能出现的字符digits,数字+字母,长度为36
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‘ };
方法正文:
public static String toString(int i, int radix) {
//Min/Max_RADIX分别为2,36 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)); }
标签:
原文地址:http://www.cnblogs.com/ljy201992/p/Integer_sourceCode.html