我一直在使用String来执行以下操作。
String x = "a";
String y = "b";
String z = y+""+x;
x = y;
y = z;
因此x和y的最终值是b和ba。我试着使用StringBuffer。
StringBuffer x = new StringBuffer("a");
StringBuffer y = new StringBuffer("b");
StringBuffer z = new StringBuffer();
z = y+""+x; //???
API提供追加功能,但它不执行串联操作。在StringBuffer类中是否存在连接的等价物?
答案 0 :(得分:6)
除非必须,否则不要使用StringBuffer。 Java 5.0及更高版本默认使用StringBuilder
从JDK 5发布版开始,这个类已经补充了一个设计用于单个线程StringBuilder的等效类。 StringBuilder类通常应优先于此使用,因为它支持所有相同的操作,但速度更快,因为它不执行同步。
StringBuilder x = new StringBuilder("a");
StringBuilder y = new StringBuilder("b");
StringBuilder z = new StringBuilder().append(x).append(y);
答案 1 :(得分:4)
您想要的方法是追加:z = x.append(" ").append(y);
正如您所看到的,附加内容可以级联以获得良好的代码流。
但如果您使用的是Java 1.5或更高版本,最好还是使用StringBuilder
。 StringBuffer
是一个同步类,在需要线程安全代码时很好。当您的变量不需要线程安全时,请使用StringBuilder
来获得更好的性能。
答案 2 :(得分:2)
您可以使用StringBuffer.append(StringBuffer)
:
z.append(y).append(x);
答案 3 :(得分:1)
String z = y.toString() + x.toString();
或
StringBuilder z = new StringBuilder();
z.append(y).append(x);
注意:
+ "" +
是多余的,所以我已将其删除。StringBuilder
而不是StringBuffer
。答案 4 :(得分:1)
StringBuffer本身不像String那样支持+
。您必须使用append
方法。
答案 5 :(得分:1)
不,没有; String
上使用的+运算符是Java中对象的特例。只有String
才能使用它。要在StringBuffer
进行连接,它更加迂回。您必须使用append()
(或上帝禁止,将其转换为String
,使用+,然后将结果转换回StringBuffer
)。
使用StringBuffer
,您可以追加另一个StringBuffer
。即:
stringBuffer1.append(stringBuffer2)
答案 6 :(得分:0)
AHHH
字符串是不可变的,因此每次执行z + x时,实际上都是实例化一个包含前两个连接的全新对象。
StringBuffers是可变的,这意味着可以在不创建新实例的情况下更改它们。这允许创建一个字符串缓冲区,并根据需要附加其他字符串值。
StringBuffer a = new StringBuffer("a");
a.append("b").append("c");
a.append("d");
在调用a.toString()时会产生“abcd”。
答案 7 :(得分:0)
假设你想要:
然后,不,StringBuffer / Builder不会这样做。