[url]http://www.cnblogs.com/iliuyuet/p/5603618.html[/url]
1,堆存引用;栈存值,可共享
2,int a=3
堆中创建一个a的引用;
栈中创建3的字面值;
a这个引用指向3这个值
3,String str = "abc"
(1)堆中创建一个str的引用;
(2)栈中查找有没有存放值为"abc"的地址,如果没有,则开辟一个存放字面值为"abc"的地址,接着创建一个新的String类的对象o,并 将o的字符串值指向这个地址,而且在栈中这个地址旁边记下这个引用的对象o。如果已经有了值为"abc"的地址,则查找对象o,并返回o的地址。
(3)将str指向对象o的地址。
4,String str1 = "abc"; String str2 = "abc";
1,堆存引用;栈存值,可共享
2,int a=3
堆中创建一个a的引用;
栈中创建3的字面值;
a这个引用指向3这个值
3,String str = "abc"
(1)堆中创建一个str的引用;
(2)栈中查找有没有存放值为"abc"的地址,如果没有,则开辟一个存放字面值为"abc"的地址,接着创建一个新的String类的对象o,并 将o的字符串值指向这个地址,而且在栈中这个地址旁边记下这个引用的对象o。如果已经有了值为"abc"的地址,则查找对象o,并返回o的地址。
(3)将str指向对象o的地址。
4,String str1 = "abc"; String str2 = "abc";