(1)String str = "abc";
(2)String str = new String("abc");
(3)String str = "abc".intern();
第一种方式会先从常量池中判断是否存在“abc”对象,如果不存在,则会在常量池中创建该对象,然后返回常量池“abc”的引用。
第二种方式会先从常量池中判断是否存在“abc”对象,如果不存在,则会在常量池中创建该对象,然后无论常量池存不存在都在堆上再创建一个“abc”,返回堆上对象。
第三种方式跟第一种方式一样,只不过是调用本地方法intern()实现的。