public class Test
{
public static void main(String[] args)
{
String s = new String("test");// ***
String s1 = s.toUpperCase();
String s2 = s.toLowerCase();
String s3 = s1.toLowerCase();
System.out.println(s==s1);//first case
System.out.println(s==s2);//second case
System.out.println(s==s3);//third case
}
}
1)为什么它在第三种情况下返回false(评论)。s3 和 s 都指向测试是吗?但似乎 JVM在堆内存中为 s3创建了另一个名为test的对象。但对于第二种情况(评论)是不一样的。它使用之前创建为 s 的对象(在代码中注释为 ***)。这是为什么?
2) s1 对象TEST会发生什么,因为 s3 是从 s1 创建的。s1 会被销毁还是在堆中?