本帖最后由 严海荣 于 2012-9-18 11:37 编辑
String s = new String("xyz")
类加载时,"xyz"就被读入并在常量池创建了,
然后调用到new String("xyz")的时候,就在堆上创建new String("xyz")
所以是2个对象。。
-----------------------------------------------------------------
其实常量池是属于类的内容,所以在加载的时候也是创建在堆上的,
所以其实常量池的内容应该也是存在于堆上的。
简单的说,堆上用来存放 所有new出来的对象。
栈则多是存放存放 基本类型的变量数据和对象的引用。
|