java 清空stringbuffer,Java:清除StringBuffer内容

比连接字符串好吗?

如果你问是否

stringBufferVariable.append("something")

.append("more");

...

通常会比连接更好,然后是.这就是这些类存在的全部原因.与更新char数组中的值相比,对象创建很昂贵.

现在看来,如果不是所有的编译器现在都将字符串连接转换为使用StringBuilder的简单情况,例如str =“something”“more”“……”;.我可以看到的唯一性能差异是编译器没有设置初始大小的优势.基准测试将告诉您差异是否足够重要.尽管如此,使用会使代码更具可读性.

从我读过的内容来看,编译器显然无法优化循环中的连接

String str = "";

for (int i = 0; i < 10000; i++) {

str = str + i + ",";

}

所以在这些情况下你仍然希望显式使用StringBuilder.

StringBuilder与StringBuffer

StringBuilder不是线程安全的,而StringBuffer是,但它们是相同的.在StringBuffer中执行的同步使它更慢,因此StringBuilder更快,除非您需要同步,否则应该使用它.

你应该使用setLength吗?

您的示例当前编写的方式我不认为对setLength的调用会带来任何结果,因为您在每次循环中都创建了一个新的StringBuffer.你应该做的是

StringBuilder sb = new StringBuilder(128);

while () {

sb.append()

.append()

... ;

// Append stringBufferVariable.toString() to a file;

sb.setLength(0);

}

这样可以避免不必要的对象创建,setLength只会在这种情况下更新内部int变量.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值