繁体   English   中英

在Java中,是否将基元类型添加/减去/乘/划分为盒装类型会创建盒装类型的新对象?

[英]In Java, does adding/subtracting/multipying/dividing a primitive type to a boxed type create a new object of the boxed type?

Integer x = new Integer(5);
x = x + 1;

对于上面的代码片段,是在执行x = x + 1操作时创建的新Integer对象?

当算术运算符出现时, 拆箱将会出现问题,

    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

这是发生的事情:

xInteger in Integer x = new Integer(5); - 注意,这里没有新对象,将使用来自Integer缓存的对象!

现在, x + 1执行。 为了使这种情况发生, x变得int (拆箱),并且现在如何int的值6 ,其被放置在临时变量

接下来,拳击将发生在= 由于Integers-128缓存到127 ,因此不会创建值为6Integer ,但x将指向该缓存中的对象Integer(6) 当我们谈论该范围之外的值时,将创建新对象。 如果你之前有一个值超出该范围的xInteger对象,则该对象在决定时将被GC删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM