可能重复:
整数数组如何在 JVM 内部存储?
在 C# 中,当您创建一个作为引用类型的新数组时,它会将指针放在 Stack 上,并将对象本身放在 Heap 中。如果您使用简单的原始类型(例如 , 等)创建此数组int
,double
那么它所做的就是将值准确地放在它们在堆中放置的位置,而不是指向另一个存储其内容的堆地址的指针。
那么有人可以解释一下这在Java中是如何发生的吗?JavaInteger
一直在数组中使用(引用类型)还是像 C# 一样对待值类型?
int[] hello = new int[5];
hello[0] = 2; // C# put this value directly in same slot and doesn't
//create a wrapping object.
我知道 C# 没有的称为 Java 中的包装类型的东西。C# 具有自动装箱功能,但Int32
可以说不是引用类型,而是ValueType
asInteger
是对象而不是int
. 您可以使用Object o = 5;
或者如果 struct 确实有一个父类来装箱一个值,您也可以使用它来将它包装在堆中(装箱)。