JAVA 中,假如有如下一段代码,String a = "B" + "C" + "D"; 请问这个过程中会创建几个字符串对象?

工作之余,一个同事突然提出这样一个问题:String a = "B" + "C" + "D"; 请问这个过程中会创建几个字符串对象? 前提:存储池中没有任何字符串.个人认为,会按先后顺序建立1、B2、C3、BC4、BCD 四个对象,最后声明的变量 a 初始化指向字符串 “BCD”. 不知小弟说的对不对,请教各位大虾.

根据显示声明,会创建字符串a和B,C,D三个String对象
之后,编译器自动创建一个StringBuffer对象来拼接这三个字符
拼接完成后,编译器调用StringBuffer的toString方法,生成一个新String对象
最后把这个新对象作为值赋给a

整个过程,一共涉及到6个对象,其中5个是String对象。一共创建了4个String对象
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-20
4个 ,"B","C","D"实际已经创建了3个了,最后a创建并赋值"BCD";我是这样认为的;
第2个回答  2012-02-15
我觉得应该有两个对象,一个是String对象a,另一个就是字符串对象BCD,然后a指向“BCD”
第3个回答  2012-02-15
创建一个对象就是 "BCD" 是编译完成的。在java六大存储区域中的常量存储区内。本回答被提问者采纳
第4个回答  2012-02-16
B, C, D, BCD
相似回答