本帖最后由 徐梦侠 于 2012-10-19 18:12 编辑
我想你问的是这两种的区别。
String str=new String("abc");
String str1="abc";
一个字符串(例如:”abc“)就是String的一个匿名对象。而new不管如何都会又开辟一片新空间,并赋值”abc“。所以str的赋值方式相当于创建了两个对象,只是最后匿名对象由于没有引用指向而成为垃圾,会被回收。而对于str1的方式,如果一个字符串已经被一个名称引用,那么以后如果再有相同的字符串声明时,就不会再重新开辟空间,而也是指向这个匿名对象。
它们的区别你可以从下面代码中发现。
public class Test {
public static void main(String[] args) {
String str1="abc";
String str2="abc";
String str3=new String("abc");
String str4=new String("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
System.out.println(str3==str4);//false
}
}
所以对于字符串的操作通常采用直接赋值的方式完成,这样节约内存资源。 |