据我所知,以前曾提出过同样的问题─ what is difference between integer a = 5 and new Integer(5)?
但是,没有一个答案对我来说是令人满意的 -
我的问题只是这个 - 如果我说整数i = 23;它显然是在创建一个Integer类型的对象。所有Integer方法都可用。那么为什么它与显式实例化不同 - 整数i =新整数(23)?
对此的任何见解都将非常感激。
答案 0 :(得分:4)
如果我说
Integer i = 23;
,则显然正在创建i
类型的对象Integer
。
不,它返回对Integer
类型对象的引用。是否创建了new
创建或现有的(来自JVM的常量池)是否由JVM自行决定。
对于-128到127范围内的int
个字面值,甚至必需,Integer
常量被合并,并且永远不会创建新实例。