Java String比较取决于对象初始化

时间:2015-12-15 00:00:21

标签: java string equals

以下代码:

    String a = new String("aaa");
    String a2 = new String("aaa");
    System.out.println(a == a2);

    String b = "bbb";
    String b2 = "bbb";
    System.out.println(b == b2);

产生以下输出:

false
true

为什么比较a == a2和b == b2的输出有所不同,具体取决于字符串创建的类型?

1 个答案:

答案 0 :(得分:-1)

当您声明aa2时,您明确地创建了新的(不同的)String。使用构造函数会导致复制。因此==失败,因为aa2指向不同的值。

当您声明bb2时,b2可以重复使用池中的相同字符串。因此,他们实际上指向相同的值,==返回true

查看herehere以获取详细答案。