new一个String对象到底进行了那些步骤

new一个String对象到底进行了那些步骤?

        new String("abc")可以理解为创建了两个对象,第一个对象是字符串常量"abc"对象,它放在字符串常量池中,第二个对象是new String("abc"),它放在堆中。

        对于s2,这种方式会首先从字符串常量池中检查是否有"abc"这个字符串

        对于s3,使用intern方法,首先会从字符串常量池中检查是否存在"abc",如果存在则返回字符串引用,如果不存在,则把"abc"添加到字符串常量池中,并返回该字符串的引用。

执行结果: