前言
今天我们来看一下JDK里一些好玩的代码。我们来分析下。
在Integer源码里,我们可以看到这样一段代码:
final static int [] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999,99999999, 999999999, Integer.MAX_VALUE };
// Requires positive x
static int stringSize1(int x) {
for (int i=0; ; i++)
if (x <= sizeTable[i])
return i+1;
}
这段代码是在干啥???
我们仔细读下,其实就会发现他其实是计算传入的int型x的位数,要求x为正数。
嗯,不难理解。
他为什么要这么写呢?
思考
对于我们来讲,当拿到一个int型正整数,如何用程序算出它的位数呢?
一般不假思索的可能想到String的length方法计算。如下:
static int myStringSize1(int x){
return String.valueOf(x).length();
}
嗯,代码量很少。。。。。。
还有吗?
对,还可以用除法,除以10,计算位数。
static int myStringSize2(int x){
int num=1;
while(x>10){
x=x/10;
num++;
}