Integer x = new Integer(5);
x = x + 1;
对于上面的代码片段,是执行操作x = x + 1
时创建的新Integer对象吗?
答案 0 :(得分:2)
是强>
当算术运算符出现时,拆箱 将会出现问题,
Integer x = new Integer(5);
x = x + 1; //1) Unboxing will happen to int 5. 2)Addition happens
3)Reboxing to new Object -- this will create new Object
答案 1 :(得分:1)
这就是:
{p>x
Integer
中的Integer x = new Integer(5);
- 注意,此处不会有新对象,将使用整数缓存中的对象!
现在,x + 1
执行。为了实现这一点,x
变为int
(取消装箱),现在您int
的值6
如何放置在临时变量中{} STRONG>。
接下来,=
将进行拳击。由于Integers
已从-128
缓存到127
,因此您的Integer
值6
将不会被创建,但x
将指向对象{ {1}}在该缓存中。当我们谈论该范围之外的值时,将创建新对象。如果您之前有Integer(6)
x
对象的值超出该范围,则该对象在决定时将被GC删除。