为什么要多用Integer.valueOf()?

当你把Findbugs集成到Jenkins之后,你很快会爱上它。因为现在多了一双眼睛帮你检查代码质量。

当Findbugs发现你的代码里有这样的Code,

Findbugs就会报警了,它会提醒你用Integer.valueOf()来取代new Integer(),说会有更高的效率。为什么呢?原因其实很简单。看下面的代码,

Java从IntegerCache.low到IntegerCache.high的整数做了Cache,在类加载时,就事先把对像创建好,节省对小整数的分配开销。

IntegerCache.high默认是127,但我们也可以把这个数提高,比如在运行java程序时,加上-Djava.lang.Integer.IntegerCache.high=1024。那high现在就是1024了。

这种Cache机制也会有点Confusing的地方,比如下面的代码,

搞清了原理,大家就看情况使用吧!