这两种初始化String的方法有什么区别

时间:2016-08-15 05:26:46

标签: java

这两个代码有不同的输出,我不知道为什么。

String a="abc";
String b="abc";
System.out.println(a==b + " " + a.equals(b));

输出为" true true"

String a="abc";
String b=new String("abc");
System.out.println(a==b + " " + a.equals(b));

输出为" false true"

1 个答案:

答案 0 :(得分:1)

当你使用这个

String a="abc";
String b="abc";

java在内存中只创建一个abc对象,这里a和b指向同一个对象,而==不检查字符串内容,而是检查参考值。但是一旦你这样做了

String b=new String("abc");

java在内存中创建一个与b不同的新对象a,现在b和a指向两个不同的对象,因此如果将内容与equals进行比较,函数结果将是如果您现在比较引用,则结果为false

Read about it's usage