[英]How is Swift's “implicitly unwrapped optionals” different from Java's “autoboxing” of integers?
[英]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.