String s1="Hello";
s1=s1.concat("World");
String s2="HelloWorld";
System.out.println(s1);
System.out.println(s2);
System.out.println(s2==s1); //false
在连接之后,“HelloWorld”字符串在字符串常量池中创建,我们正在创建另一个具有相同单词“HelloWorld”的字符串,然后它已经存在于字符串常量池中,因此它返回现有的引用。那么,为什么我的代码在输出中给出了错误?
String s1="Hello";
String s2="HelloWorld";
s1=s1.concat("World");
System.out.println(s1);
System.out.println(s2);
System.out.println(s2==s1);//false
String s1="Hello";
s1=s1+"World";
String s2="HelloWorld";
System.out.println(s1);
System.out.println(s2);
System.out.println(s2==s1);//false
为什么是假的??为什么他们指向不同的参考。因为这个词已经存在于字符串常量池中。那么如果我们形成一个具有相同值的新字符串对象,那么它应该指向已经存在的对象。