StringBuffer sb = new StringBuffer("abc");
StringBuffer sb1 = sb;
StringBuffer sb2 = new StringBuffer("abc");
创建了多少个对象?
答案 0 :(得分:4)
StringBuffer
个对象,因为有2个new
。String
个对象[JLS,3.10.5 =>保证在同一个虚拟机中运行的任何其他代码重复使用该对象,该代码恰好包含相同的字符串文字。答案 1 :(得分:1)
StringBuffer
个对象,每个对象都包含char[]
String
个对象,其中包含char[]
总共有6个对象。
如果之前已经运行了任何引用“abc”的代码,则不会创建String
,因此只会创建4个对象。
答案 2 :(得分:0)
您可以启动调试器并简单计算您运行新版本的次数...高级:使用https://hat.dev.java.net/或http://www.eclipse.org/mat/或其他堆工具。