我从博客中读到,当我们使用operator时,内部
java使用StringBuilder来连接String.我只是检查它,发现了一些奇怪的输出.
public class StringDemo {
public static void main(String[] args) {
String a = "Hello World";
String b = "Hello World";
String c = "Hello";
String d = c + " World".intern();
String e = new StringBuilder().append(String.valueOf(c)).append(" World").toString().intern() ;
String f = new StringBuilder(String.valueOf(c)).append(" World").toString().intern();
System.out.println(a == b); // Line 1 Expected output true
System.out.println(a == d); // Line 2 Output is false
System.out.println(a == e); // Line 3 Output is true
System.out.println(a == f); // Line 4 Output is true
}
}
所以我使用运算符来连接两个字符串c& “World”然后使用intern()方法在String中移动池中的String.
根据我的理解,java使用StringBuilder,所以现在我使用StringBuilder来连接String并使用intern()方法来处理字符串e和f.
因此,如果两个字符串的等效地址和地址必须相同,但第2行的输出与第4行和第4行不匹配. 5.
提前感谢您的宝贵意见.