String s = new String(“xyz”);
解析:生成3个对象,一个常量池对象"xyz",一个堆对象new String(“xyz”),一个引用对象s。
String s = new String(“xyz”) + “xyz”;
解析:生成3个对象,一个常量池对象"xyz",一个堆对象 new String(“xyz”),一个引用对象s。(后面的“xyz”不会再创建了,因为前面的new String(“xyz”)已经创建了一个常量池对象"xyz")
String s = new String(“xyz” + “abc”);
解析:生成5个对象,3个常量池对象“xyz"、“abc"、“xyzabc”,1个堆对象new String(“xyz” + “abc”),1个引用对象s。
String s = new String(“xyz”) + “abc”;
解析:生成5个对象,3个常量池对象“xyz"、“abc"、“xyzabc”,1个堆对象new String(“xyz” + “abc”),1个引用对象s。