一道基础题目,两个字符串比较

大家好啊,我是刚学习java的。碰到了一个难理解的问题。
题目如下所示:
String s = "we";
String s1 = "we";
if(s==s1){
System.out.println("true");
}else{
System.out.println("false");
}

输出的内容怎么是“true”啊?不是说“==”比的是地址码?应该输出false啊、好是困惑。望大侠们帮我指点指点。最好说详细点。先谢谢大家了。

JAVA里面有一个字符串池

如果你用双引号""来创建String对象,那么他会先去这个池里面查找是否已经存在这个字符串,如果已经存在,把这个对象的引用返回给你,如果不存在,创建一个String对象返回,同时把这个对象放进池里面。

你这里2次都用双引号创建,他会从池里面返回同一个对象,所以是同一个地址,2个对象完全相等。

s和s1用的是同一个地址 如果你要是这么写就变了
String s1 = new String("we");

1楼+2楼 = 100 分.