5

如果我创建一个静态块并在那里创建一个对象,比如其他一些类,该对象是在堆上创建还是在堆栈上创建?

class Hello {
   static {
       Abc abcObject=new Abc();
   }
   // Other Code...
} 
4

2 回答 2

7

无论静态(或)非静态,对象总是在堆上。

引用将在堆栈上。

于 2012-09-04T15:26:17.400 回答
4

对象是在堆中创建的,但对对象的引用在堆栈中。

您创建的变量abcObject位于堆栈中。这包含存储对象的堆内的内存地址new Abc()

于 2012-09-04T15:26:42.043 回答