New Integer vs valueOf [英] New Integer vs valueOf
问题描述
我使用声纳让我的代码更干净,它指出我正在使用 new Integer(1)
而不是 Integer.valueOf(1)
。因为似乎 valueOf
没有实例化新对象,所以更加内存友好。 valueOf
如何不实例化新对象?它是如何工作的?对于所有整数都是如此吗?
I was using Sonar to make my code cleaner, and it pointed out that I'm using new Integer(1)
instead of Integer.valueOf(1)
. Because it seems that valueOf
does not instantiate a new object so is more memory-friendly. How can valueOf
not instantiate a new object? How does it work? Is this true for all integers?
推荐答案
Integer.valueOf为值-128到+127实现缓存。请参阅Java语言规范的最后一段,第5.1.7节,其中解释了装箱的要求(通常根据.valueOf方法实现)。
Integer.valueOf implements a cache for the values -128 to +127. See the last paragraph of the Java Language Specification, section 5.1.7, which explains the requirements for boxing (usually implemented in terms of the .valueOf methods).
http://docs.oracle.com /javase/specs/jls/se7/html/jls-5.html#jls-5.1.7
这篇关于New Integer vs valueOf的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!