<分区>
Possible Duplicate:
How are Integer arrays stored internally, in the JVM?
在 C# 中,当您创建一个引用类型的新数组时,它会将指针放在堆栈上,并将对象本身放在堆中。如果您使用简单的基本类型(例如 int
、double
等)创建此数组,它所做的是将值准确地放在它们在堆中的位置,而不是指针它指向存储它的内容的另一个堆地址。
有人可以解释一下这在 Java 中是如何发生的吗? Java 一直在数组中使用 Integer
(一种引用类型),还是像 C# 那样对待值类型?
int[] hello = new int[5];
hello[0] = 2; // C# put this value directly in same slot and doesn't
//create a wrapping object.
我知道一个叫做 Wrapping Types in Java 的东西,而 C# 没有。 C# 具有自动装箱功能,但 Int32
不是引用类型,而是 ValueType
,其中 Integer
是对象而不是 int
。您可以使用 Object o = 5;
装箱一个值,或者如果 struct 确实有一个父类,您也可以使用它来将它包装在堆中(装箱)。