2010-08-13 61 views

回答

18

你可以认为它一如既往在堆上。

我相信一些智能虚拟机能够堆栈分配对象,如果他们能够检测到它是安全的 - 但从概念上说它在堆上。特别是,所有数组类型都是引用类型(即使元素类型是原始类型),所以array变量(位于堆栈上)仅仅是对对象的引用,并且对象通常位于堆上。

特别是,设想一个小的变化:

byte[] someMethod() { 
    byte[] array = { 0, 0 }; 
    return array; 
} 

如果数组是在栈上分配的,你会返回的引用都指什么?

1

它将被存储在堆中