尝试自己实现,就写出来了如下的代码
flag 改为 negative。
JDK 1.7 的实现如下,
每次处理后两位, 数值65对应的十位取DigitTens数组的第65位,对应的个位取DigitOnes数组的第65位。这样的构造实属意想不到。
为什么以65536作为分界点? 为什么不是100? 为什么不是下面的这种实现?
/10的等价实现 。 范围(0-65535 )
确定字符串的长度 0-9一位 ,10-99两位,100-999三位 ,1000-9999四位
两者相比较而言 :
前者占用的内存更多, 使用了 StringBuilder 对象,默认会申请16个字节的char[],并且需要存储一些额外的信息,而后者是需要多少char则申请多大的char数组(最多11字节)。 前者的计算量更大,涉及除法和余法的计算,还涉及到一次字符串的翻转。 前者不要多少脑子,后者需要动脑。