繁体   English   中英

自动装箱与赋值有何不同?

[英]How does is autoboxing different from assigning a value?

我一直在阅读 Java 中有关自动装箱的信息。 我想知道以下两者之间的区别

 1) int y = 9;
    Integer x = y;

2) Integer x = new Integer(9);

以上两者有什么区别? 我知道第二个在堆中分配了一个 memory。 第一种情况不会在堆中分配空间吗?

Integer x = y;

实际上导致

Integer x = Integer.valueOf(y);

而不是

Integer x = new Integer(y);

对于 -128..127 范围内的整数,这将返回一个缓存值。 在该范围之外,它可能使用缓存值或新的 Integer,具体取决于您的 JVM 和配置。

通过为公共整数使用缓存值,可以避免不必要的堆分配。 new总是导致创建一个新实例(如果没有抛出异常)。

暂无
暂无

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

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