关于Java中的String对象中的堆与栈的问题
猎人-d 2012-07-19 03:11:21 String str1=new String("abc");
String str2="abc";
些两句有创建了多少个对象。正确的答案是创建了两个对象。
问题:
我对这两句的理解:
String str1=new String("abc"); 创建了两个对象,new一个对象和创建了一个字符为abc的值的对象,并把abc放在堆中。
String str2="abc"; 创建一个新的对象,并把abc放在栈中。
所以我不知道为什么只有两个对象。
除非第一句中,堆也是可以共享数据的。所以String str2="abc";中的abc才在堆中找到了abc,然后str直接指向abc。
各位能不能给我解释下