Java中的String比较结果不同吗?

时间:2018-09-11 11:17:44

标签: 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
    }
}

这与How do I compare strings in Java?不同,因为答案不包含为何在第二种情况下创建新对象的原因,因为它可能指向与第一种情况下相同的对象引用。

1 个答案:

答案 0 :(得分:5)

"Chai"+"pau"在语义上与"Chaipau"相同,因此与a所引用的实例相同。

"Chai"+b在运行时求值(因为b不是编译时常量表达式),创建了String的新实例,因此与{{ 1}}是指。