整数i = 23;与整数i =新整数(23);以前的答案不尽如人意

时间:2014-09-14 19:56:19

标签: java wrapper

据我所知,以前曾提出过同样的问题─ what is difference between integer a = 5 and new Integer(5)?

但是,没有一个答案对我来说是令人满意的 -

我的问题只是这个 - 如果我说整数i = 23;它显然是在创建一个Integer类型的对象。所有Integer方法都可用。那么为什么它与显式实例化不同 - 整数i =新整数(23)?

对此的任何见解都将非常感激。

1 个答案:

答案 0 :(得分:4)

  

如果我说Integer i = 23;,则显然正在创建i类型的对象Integer

不,它返回Integer类型对象的引用。是否创建了new 创建或现有的(来自JVM的常量池)是否由JVM自行决定。

对于-128到127范围内的int个字面值,甚至必需Integer常量被合并,并且永远不会创建新实例。