StringBuffer追加(“”)

时间:2009-12-02 15:07:35

标签: java multithreading

我目前正在使用大量的这些重构应用程序:

StringBuffer buff1 = new StringBuffer("");

buff1.append("some value A");
buff1.append("");
buff1.append("some value B");

制作这些代码行的编码器似乎不是白痴,有什么理由让我看不到对StringBuffer使用append(“”)吗?

7 个答案:

答案 0 :(得分:5)

不。

鉴于它们是硬编码的字符串,它与写

相同
buff1 = new StringBuffer("some value Asome value B");
顺便说一句,使用StringBuilder而不是StringBuffer(和API相同)会更有效率。

答案 1 :(得分:4)

不,你不需要append("")。您也不需要使用String初始化StringBuffer。 new StringBuffer();可以正常使用。

答案 2 :(得分:4)

代码很可能是由某些重构工具生成的,编码器并不打算删除冗余行。

答案 3 :(得分:2)

如果没有对StringBuffer进行进一步追加,则应将代码重写为

String buff1 = "some value some value B";

这比以下内容更简洁,更易读,更安全。

StringBuffer buff1 = new StringBuffer("");

buff1.append("some value A");
buff1.append("some value B");

我说'更安全',因为String是不可变的,StringBuffer是不可变的,因此构造后不会意外地更改String。


<强>除了

一种常见的误解是“在Java中连接字符串很糟糕”。虽然你不应该写这样的代码

String buff1 = "foo";    
buff1 += "some value A";
buff1 += "some value B";

编写这样的代码是完全可以接受的:

String buff1 = "foo" + "some value A" + "some value B";

当在单个语句中执行串联时,代码将优化为:

String buff1 = "foo some value A some value B";

答案 4 :(得分:0)

我能想到为什么他这样做的唯一原因是可读性(尽管这看起来有点奇怪)。

答案 5 :(得分:0)

他可能打算放buff1.append(" ");。我的看法。

答案 6 :(得分:0)

buff1.append(“”)无关紧要,应该删除。