Integer.valueOf()比新的Integer()更好

时间:2011-07-04 12:59:33

标签: java

  

可能重复:
  New Integer vs valueOf

我在几个地方读到Integer.valueOf比新的Integer()更好,因为它允许编译器完成值的缓存。那么我什么时候应该使用新的Integer()而不是Integer.valueOf()。是否存在我不应该使用Interger.valueOf()

的原因/场景

由于

4 个答案:

答案 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版本。