我写了一个Java程序,其中,我需要附加一个字符串
" u13a2"
到现有的"u1234 u12de u1386 ... u15a3"
。
渐渐地,弦变得越来越长。我发现每次追加所花费的时间也变得越来越长。有什么方法可以在某种程度上改善这一点吗?
我想到的实现包括:
unicodeArray += " "+unicode;
或
unicodeArray = unicodeArray.concat(" "+unicode);
他们给出了类似的表现。我认为造成这些糟糕表现的主要原因是特殊类型String
。它为每个作业创建一个新对象。如果您也这么认为,这是否意味着我最好使用其他类型,如字节数组?
答案 0 :(得分:94)
您应该使用StringBuilder类。
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("Some text");
stringBuilder.append("Some text");
stringBuilder.append("Some text");
String finalString = stringBuilder.toString();
另外,请访问:
答案 1 :(得分:30)
使用StringBuilder
课程。在你想要做的事情上它更有效率。
答案 2 :(得分:8)
您可以使用StringBuffer
或StringBuilder
。两者都用于动态字符串操作。 StringBuffer
是线程安全的,而StringBuilder
则不是。
在多线程环境中使用StringBuffer
。但如果它是单线程StringBuilder
,建议它比StringBuffer
快得多。
答案 3 :(得分:2)
- 每次附加或对其进行任何修改时,都会创建一个新的String
对象。
- 因此使用append()
的{{1}}方法(如果线程安全不重要),则使用StringBuilder
(如果线程安全 重要。),这将是有效的方法。
答案 4 :(得分:0)
java.lang.StringBuilder中。使用int构造函数创建初始大小。