[Quote=引用 3 楼 cl55 的回复:]
你的String str = "I LOVE you";写在什么地方? 否则不能确定。
比如在method里就应该在栈上,做为member就不会在栈上。
[/Quote]
答:能确定。在所谓的常量池中。可以粗糙地认为,是在代码区中。另外,程序中所有的 "I LOVE you"(比如出现了100次),则只有一个"I LOVE you"对象(其实就是一个字节块而已)放在常量池中。其它的99个都是使用的同一个。无论在哪儿,使用new String(...)时,才在堆中分配空间。