以下是引用张永亮在2013-11-30 11:08:54的发言:
String str1="abc";
String str2="abc";
String str3=new String("abc");
System.out.print(str1==str2);
System.out.print(str1==str3);
str1==str2的判断将将返回true,str1创建字符串常量“str1”,java 虚拟机会检测字符串池是否包含该字符串,如果不包含,则创建,然后返回。str2也赋值“abc”,这是字符串池村子该字符,所以不再创建,直接返回该字符,两个变量引用同一一个字符串,他们的内存地址相同,所以str1==str2,但是使用new关键字创建字符串时会开辟新的空间,所以str1==str3不成立,现在你应该明白
String str1="abc";
String str3=new String("abc");
为什么不同了吧!
O(∩_∩)O谢谢,但是为什么说第二个产生两个对象呢???????????