这里是关于JVM的相关知识
因为String在Java源码中是一个被final修饰的类:
所以每次操作都会生成新的String对象,然后将指针指向新的String对象。
//相当于在堆内存的常量池中 新开辟了 一块地址内存空间 内存空间存放的数据是“abc”
//而 s1是存在于栈内存中的
// 此时栈内存中的s1 指向 了 堆内存空间中的常量池数据也就是 “abc”
String s1 = "abc";
//而当楼主 new String("abc")时 ,也是重新开辟了一块内存地址 将数据放到里面 s3 的指针 指向 新开辟的内存地址
String s3 = new String("abc");
System.out.println(s1 == s3); //false