Java 中字符串比较的结果有何不同?



Java如何实现以下字符串比较

public class MyClass {
public static void main(String args[]) {
String a = "Chaipau";
String b = "pau";
System.out.println(a == "Chai"+"pau"); //true
System.out.println(a == "Chai"+b); //false
}
}

这与如何在 Java 中比较字符串不同?,因为答案不包含为什么在第二种情况下创建新对象,而它本可以指向与第一种情况相同的对象引用。

"Chai"+"pau"

在语义上与"Chaipau"相同,因此与a所指的实例相同。

"Chai"+b在运行时计算(因为b不是编译时常量表达式(,创建String的新实例,因此与a引用的实例不同。

相关内容