小弟的理解是str1和str2里面存放的都是"abc"的首地址,
                String str1 = "abc";等效于
                char data[]={`a`,`b`,`c`};
                                String str1=new String(data);
                String str2=new String(data);
    但是在下面的这个等效语句中的str1和str2确是不同的。问题出在 String(char[] value)这个构造函数。因为构造了两次,所以每次分配的堆内存必然是不相同的。这就导致了栈内存中表示堆内存首地址的str1,str2是不同的。
   不知道我这个理解是不是正确?