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

Java 为什么这些字符串的结果不同?,java,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语句的结果不同?字符串类: 1.当使用新关键字时,意味着获得一个新的内存站点。 2.当使用“”时,样式意味着将

我发现了这一点,但我不知道这有什么意义

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语句的结果不同?

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

==
检查引用。
.equals
检查实际组件

在您的例子中,s1和s2指向两个不同的对象,s2和s3共享公共引用,因为它们的组件是相同的


查看问题以获得详细解释。

@Artur-如果此答案被接受,请对其进行评分。