前言
Integer和Interger.valueOf()有什么区别,JDK1.5源码之后引入了Interger.valueOf(int),具体是什么用处。
从源代码可以知道,valueOf对-128~ 127这256个值做了缓存(IntegerCache),如果int的取值范围是:-128~127在vlaueOf(int)时,他会直接返回IntegerCache的缓存给你。
一、Integer.valueOf源码
Integer a = new Integer(1);
Integer b = Integer.valueOf(1);
两个都是得到一个Integer对象,但是Integer.valueOf的效率高。为什么呢?因为Integer.valueOf用到了缓存。看看Integer.valueOf的代码:
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) {
// must cache
return IntegerCache.cache[i