这两个代码有不同的输出,我不知道为什么。
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));
输出为“假真”
最佳答案
当你使用这个
String a="abc";
String b="abc";
java在内存中只创建一个对象,即abc
,这里a和b指向同一个对象,并且==
不检查字符串内容而是它检查引用值。但一旦你这样做了
String b=new String("abc");
java 在内存中创建一个与 a
不同的新对象 b
,现在 b 和 a 指向两个不同的对象,因此如果您将内容与 进行比较equals
函数结果将为 true,但如果您现在比较引用,结果将为 false
关于java - 这两种初始化String的方式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38949730/