可能重复:
New Integer vs valueOf
我在几个地方读到Integer.valueOf比新的Integer()更好,因为它允许编译器完成值的缓存。那么我什么时候应该使用新的Integer()而不是Integer.valueOf()。是否存在我不应该使用Interger.valueOf()
的原因/场景由于
答案 0 :(得分:4)
不,没有应该使用new Integer()
的情况。如果你通过包装器对象标识区分整数,那么你就不太可能做一些合理的事情。
答案 1 :(得分:3)
当您需要不同的对象标识时,您可以使用new。你不使用valueOf。
当您在同一个值上多次调用valueOf时,JVM可能会(实际上在某些情况下)会反复为您提供相同的对象。当你使用new时,它不会。因此,如果您需要多个不同的2
个对象(例如,出于不同原因呼叫等待),请使用new。
另一方面,如果您使用Integer
而不是int
的唯一原因是null
可能存在,或者存储在某个集合中,请使用{{ 1}}。
答案 2 :(得分:1)
我能想到的唯一原因是你需要两个不同但相等的Integer对象。
System.out.println(new Integer(1)==new Integer(1)); // false
System.out.println(Integer.valueOf(1)==Integer.valueOf(1)); // true
答案 3 :(得分:0)
不使用Integer.valueOf(int)的正当理由是,如果您的项目被限制为在1.5之前使用JDK版本。