第四题两个代码产生5个对象,通过jclasslib看字节码文件就可以知道: String a = "xiaoguo"; // 字符串常量池1个 String b = new String(a + "cjx"); /** * 对象1:字符串常量池里面的 "xiaoguo" * 对象2:堆空间一个新对象 * 对象3:new StringBuilder(),线程不安全。 * 对象4:字符串常量池里面的 "cjx" * * * 深入剖析: StringBuilder的toString(): * * 对象5 :new String("xiaoguocjx") * * 强调一下,toString()的调用,在字符串常量池中,没有生成"xiaoguocjx" * */