为什么这些字符串的结果不同?

时间:2016-02-03 06:31:32

标签: java

我发现了这一点,但我不知道重点是什么。

String s1 = new String("heyheyhey");
String s2="heyheyhey";
String s3="heyheyhey";
if(s1==s2)System.out.println("s1 == s2");
if(s2==s3)System.out.println("s2 == s3");

为什么两个if语句都有不同的结果?

2 个答案:

答案 0 :(得分:0)

String类: 1.使用新关键字意味着获得一个新的内存网站。 2.使用""样式意味着尝试从常量池中获取工作,如果不存在它将返回新的内存站点。

答案 1 :(得分:0)

==检查参考。 .equals检查实际组件。

在你的情况下,s1和s2指向两个不同的对象,s2和s3共享公共引用,因为组件是相同的。

查看this问题以获取详细说明。