关于String的基本查询

时间:2014-09-13 09:13:33

标签: java string

这是关于String的一个非常基本的问题。

String str1 = "abc";
String str2 = "abc";

System.out.println("out put " + str1 == str2);

我执行程序时感到很震惊。我得到false

据我所知,如果另一个字符串想要指向相同的字符串文字,则字符串文字在字符串引用之间共享。 JVM将首先在String池中检查它,如果它不存在则会创建一个并提供引用,否则它将在多个String引用之间共享,就像在这种情况下一样(根据我)。

因此,如果我遵循我的理论,那么它应该返回true作为String引用指向同一个字符串文字。

2 个答案:

答案 0 :(得分:4)

您需要执行以下操作才能正确检查: -

System.out.println("out put " + (str1 == str2));

这将按预期为真。

你的陈述" out put" + str1然后尝试将其与str2

等同

答案 1 :(得分:0)

你对String的行为是正确的。但是,你忘记了operator precedence.第一次添加被执行,后来是平等。

因此,在您的情况下,首先执行"out put " + str1,这会产生"out put abc"。稍后将其与str2进行比较,后者为false

你的意思是"out put " + (str1 == str2),确实给了true