Java中字符串比较结果的差异?

Cha*_*pau -3 java string string-comparison

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
    }
}
Run Code Online (Sandbox Code Playgroud)

这与我如何比较Java中的字符串不同,因为答案不包含在第二种情况下创建新对象的原因,因为它可能指向与第一种情况相同的对象引用.

And*_*ner 5

"Chai"+"pau"在语义上是相同的"Chaipau",因此是a指的是同一个实例.

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