StringBuffer和之间的主要区别是StringBuilder什么?在决定其中任何一个时,是否存在任何性能问题?
鉴于toString()下面的两个实现,首选哪一个:
public String toString(){
return "{a:"+ a + ", b:" + b + ", c: " + c +"}";
}
Run Code Online (Sandbox Code Playgroud)
要么
public String toString(){
StringBuilder sb = new StringBuilder(100);
return sb.append("{a:").append(a)
.append(", b:").append(b)
.append(", c:").append(c)
.append("}")
.toString();
}
Run Code Online (Sandbox Code Playgroud)
?
更重要的是,鉴于我们只有3个属性,它可能没有什么区别,但你会在什么时候从+concat 切换到 StringBuilder?
我在一个循环中使用一个StringBuilder,每个x迭代我想要清空它并以空的开头StringBuilder,但是在文档中我看不到任何类似于.NET StringBuilder.Clear的方法,只是看起来像删除方法过于复杂.
那么StringBuilder用Java 清理一个最好的方法是什么?
当你必须遍历一个集合并用分隔符分隔每个数据的字符串时,你最终总会得到一个额外的分隔符,例如
for (String serverId : serverIds) {
sb.append(serverId);
sb.append(",");
}
Run Code Online (Sandbox Code Playgroud)
给出类似:serverId_1,serverId_2,serverId_3,
我想删除StringBuilder中的最后一个字符(没有转换它,因为我在这个循环之后仍然需要它).
我有一个StringBuilder对象,
StringBuilder result = new StringBuilder();
result.append(someChar);
Run Code Online (Sandbox Code Playgroud)
现在我想在其中添加一个换行符StringBuilder.我该怎么做?
result.append("/n");
Run Code Online (Sandbox Code Playgroud)
不行.所以,我正在考虑使用Unicode编写换行符.这会有帮助吗?如果是这样,我该如何添加?
请告诉我一个实时的情况来比较String,StringBuffer和StringBuilder?
我看到了一些代码项目解决方案.
但是JavaScript中是否有常规实现?
假设我在C#中有一个stringbuilder来执行此操作:
StringBuilder sb = new StringBuilder();
string cat = "cat";
sb.Append("the ").Append(cat).(" in the hat");
string s = sb.ToString();
Run Code Online (Sandbox Code Playgroud)
那将是有效的或更高效的:
string cat = "cat";
string s = String.Format("The {0} in the hat", cat);
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
编辑
在一些有趣的答案之后,我意识到我可能应该对我的要求更加清楚.我没有那么多要求连接字符串哪个更快,但是将一个字符串注入另一个字符串更快.
在上面两种情况下,我想将一个或多个字符串注入预定义模板字符串的中间.
对困惑感到抱歉
我有关于使用StringBuilder的性能相关问题.在一个很长的循环中,我正在操纵a StringBuilder并将其传递给另一个方法,如下所示:
for (loop condition) {
StringBuilder sb = new StringBuilder();
sb.append("some string");
. . .
sb.append(anotherString);
. . .
passToMethod(sb.toString());
}
Run Code Online (Sandbox Code Playgroud)
StringBuilder在每个循环周期实例化是一个很好的解决方案吗?并且更好地调用删除,如下所示?
StringBuilder sb = new StringBuilder();
for (loop condition) {
sb.delete(0, sb.length);
sb.append("some string");
. . .
sb.append(anotherString);
. . .
passToMethod(sb.toString());
}
Run Code Online (Sandbox Code Playgroud) 我知道我们可以使用附加字符串StringBuilder.有没有办法我们可以预先添加字符串(即在字符串前添加字符串),StringBuilder这样我们可以保持提供的性能优势StringBuilder?
stringbuilder ×10
java ×8
performance ×3
string ×3
c# ×2
javascript ×1
oop ×1
stringbuffer ×1
vb.net ×1