是否有理由在单线程应用程序中使用StringBuffer
而不是StringBuilder
?如果我们不计算使用多个线程的应用程序中的同步,那么StringBuffer
是否有任何优势?
答案 0 :(得分:3)
没有。即使在多线程应用程序中,您也不一定需要StringBuffer
,除非您实际上是从多个线程处理它。如果您愿意,可能会使用更好的数据结构。
答案 1 :(得分:3)
我能想到的唯一原因是与1.5之前的Java(可能仍在一些大公司中使用)的兼容性,以及与不支持StringBuilder的其他平台(即CLDC)共享的代码。
答案 2 :(得分:2)
是否有理由在单线程应用程序中使用StringBuffer 而不是StringBuilder?
答案是:没有理由。
答案 3 :(得分:2)
没有理由选择StringBuffer
。以下语句是从StringBuffer Doc:
从JDK 5发布版开始,这个类已经补充了一个设计用于单个线程StringBuilder的等效类。 StringBuilder类通常应优先于此使用,因为它支持所有相同的操作,但速度更快,因为它不执行同步。
答案 4 :(得分:1)
StringBuilder具有非同步方法,其中StringBuffer具有同步方法。因此,对于单线程应用程序,建议使用StringBuilder。
答案 5 :(得分:1)
StringBuffer
。将StringBuffer
类用于单线程应用程序并不是一个好主意,因为它会使处理速度变慢。因此,如果您不打算使用线程,那么请使用StringBuilder
类,因为由于缺少同步,它比StringBuffer
更有效。
答案 6 :(得分:1)
您可以在单线程应用程序中使用StringBuffer
,但没有理由。
虽然现代JIT-comiler非常聪明,它可以eliminated不必要的同步,StringBuffer
可以转向StringBuilder
。但这不可能发生。 =)
答案 7 :(得分:1)
一般来说,没有理由使用StringBuffer!
(即使你有一些古老的应用程序或库,通常只会传递form-data
......)
String应该从多个线程接收输入的用例是什么?
有人可能会考虑像日志这样的东西,但是如果需要在多线程环境中登录,那么可以使用很多解决方案而无需自己发明...
所以:否