我目前正在使用大量的这些重构应用程序:
StringBuffer buff1 = new StringBuffer("");
buff1.append("some value A");
buff1.append("");
buff1.append("some value B");
制作这些代码行的编码器似乎不是白痴,有什么理由让我看不到对StringBuffer使用append(“”)吗?
答案 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(“”)无关紧要,应该删除。