假设我们有以下代码:
void method() {
int[] test = new int[3];
test[0] = 0;
test[1] = 1;
test[2] = 2;
}
根据我从Jon Skeet's post on SO读到的内容,new int[3]
部分相当于:
public class ArrayInt3 {
public readonly int length = 3;
public int value0;
public int value1;
public int value2;
}
这是否意味着test
(对ArrayInt3
的引用)在堆栈上?这是否意味着ArrayInt3
在堆上?我想value0
,value1
和value2
也在堆上(在本例中为0,1,2)?
总的来说,堆上有4个对象,对吗?
答案 0 :(得分:1)
堆栈上没有对象。在堆栈上,将存储堆中存储的单个int[]
对象的参考值。
您必须开始区分对象,变量和值。
局部变量是方法堆栈的一部分,它位于堆栈上。因此int[]
的参考值将存储在堆栈中的变量中。