String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
为什么s1和s2的内容相同,地址相同
而s1,s1与s3的内容相同而地址不同,
s3和s4的内容相同而地址也不同啊
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
为什么s1和s2的内容相同,地址相同
而s1,s1与s3的内容相同而地址不同,
s3和s4的内容相同而地址也不同啊
s3和s4是通过new出来的,分别是不同的对象的引用,故内容相同但地址不同
s3和s4是通过new出来的,分别是不同的对象的引用,故内容相同但地址不同
String s2="abc";
s1,s2是在常量池中,
String s1="abc";
String s2="abc";
因S1和s2的内容都为"abc"
则s1和s2将做为一个对象在String Pool中被创建,String Pool中只有一个实例存在,既表示s1,又表示s2,也就是LZ说的,地址和内容都相同。而对于堆空间,为每个被创建的对象都分配一块空间,所以每个对象的地址都不相同。
String s3=new String("abc");
String s4=new String("abc");
s3和s4是两个内容相同对象,但地址不会相同,更不会与s1 s2的地址有关系了