java.lang包中的Integer类是我们比较常用的类,比如以下代码:
Integer a=new Integer(1)
Integer a=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 + offset];
}
return new Integer(i);
}
在这个类中使用到了一个辅助类IntegerCache,其中

Java中Integer对象通过`new Integer()`和`Integer.valueOf()`创建时存在效率和内存使用差异。`Integer.valueOf()`利用缓存机制,在-128到127之间会复用已有对象,提高效率。超出该范围则每次都会创建新对象。例如,对于数值1,`Integer.valueOf(1)`返回的对象相等,而`new Integer(1)`创建的是不同对象。

1182

被折叠的 条评论
为什么被折叠?



