String str1="a";
String str2="b";
String str3="a"+"b";
String str4=str1+"b";
System.out.println(str3=="ab");//true
System.out.println(str4=="ab");//false
如果缓冲池里面原先有"ab",则直接让str4指向就行了,如果没有则由缓冲池里面的字符串"a"和字符串"b",连接生成的一个新字符串,然后再让str4指向,当然原先的"a" ,"b"没变,不论哪种情况,都可以确定str4=="ab"
从结果看str3应是指向堆内存的对象"ab",而对于str3,实际上str3=new StringBuider("str1")+"b"; 这样就能确定生成的对象"ab"是存于堆里面的吗?即str3指向的是堆里面的对象吗? |
|