我尝试用String进行所有操作。然后我得到了这个输出
public class Stringtest {
public static void main(String[] args) {
String s1="abc";
String s2="abc";
String s3=new String("abc");
String s4=new String("abc");
System.out.println(s1.equals(s2));
System.out.println(s1==s2);
System.out.println(s1==s3.intern());
System.out.println(s3.equals(s4));
}
}
对于:
System.out.println(s1==s3.intern()); //return true
为什么结果会返回true
?
答案 0 :(得分:1)
Interning使相同的不可变对象保持相同的引用以节省内存。当s3
被实习时,它被设置为从池间指向s1
(因为它是一个文字,它很容易被添加到那里)。
由于它们具有相同的引用,==
返回true。