47

我写了一个Java程序,我需要在其中附加一个字符串

" u13a2"到现有的"u1234 u12de u1386 ... u15a3"

所以渐渐地,绳子变得越来越长。我发现每次追加所花费的时间也变得越来越长。有什么方法可以在一定程度上改善这一点吗?

我想到的实现包括:

unicodeArray += " "+unicode;

或者

unicodeArray = unicodeArray.concat(" "+unicode);

他们给出了类似的表现。我认为造成这些不良表现的主要原因是特殊类型String。它为每个分配创建一个新对象。如果你也这么认为,这是否意味着我最好使用另一种类型,比如字节数组?

4

5 回答 5

107

您应该使用StringBuilder类。

StringBuilder stringBuilder = new StringBuilder();

stringBuilder.append("Some text");
stringBuilder.append("Some text");
stringBuilder.append("Some text");

String finalString = stringBuilder.toString();

此外,请访问:

于 2012-10-15T16:33:02.773 回答
35

使用StringBuilder类。它在您尝试做的事情上更有效率。

于 2012-10-15T16:31:48.943 回答
8

您可以为此使用StringBuffer或。StringBuilder两者都用于动态字符串操作。StringBuffer是线程安全的,而 asStringBuilder不是。

StringBuffer在多线程环境中使用。但是如果它是单线程StringBuilder的,推荐它,它比StringBuffer.

于 2012-10-15T16:32:03.717 回答
2

-每次您附加或对其进行任何修改时,它都会创建一个新String对象。

-所以使用append()方法StringBuilder(如果线程安全不重要),否则使用StringBuffer(如果线程安全重要。),这将是有效的方法。

于 2012-10-15T16:34:07.053 回答
0

java.lang.StringBuilder。使用 int 构造函数创建初始大小。

于 2012-10-15T16:32:46.923 回答