下面是实例方法中的代码片段
String x = new StringBuffer().append("a").append("b").append("c").toString()
我的印象是,首先创建新的字符串缓冲区,然后将 a 添加到字符串缓冲区的最后,类似于 b 和 c。在该字符串缓冲区转换为字符串之后。因此,据我所知,创建了 2 个对象(一个用于字符串缓冲区,另一个用于字符串)。正确的?基本上按照我的说法,不会为字符串“a”、“b”、“c”创建中间对象。这是正确的吗?
编辑:-根据所有回复,看起来将为字符串文字“a”,“b”,“c”创建对象但是如果我通过链接http://docs.oracle.com/javase/1.4。 2/docs/api/java/lang/StringBuffer.html#toString (),这不应该创建临时字符串。搜索“总体而言,这避免了创建许多临时字符串。” 在这个链接上。同意它适用于 1.4.2,但我希望 1.6 的基本面保持不变
是的,如果我在下面而不是在上面创建五个对象。三个代表 "a","b","c" 。一个用于字符串缓冲区。最后是从字符串缓冲区转换的字符串。"a","b","c" 的对象和最后的字符串 "abc" 将进入池中并且终生存在
String str1="a";
String str2="b";
String str3="c";
String x = new StringBuffer().append(str1).append(str2).append(str3).toString()
以上理解正确吗?