java 怎么打印字符串_Java的printf()方法是否有效连接和打印字符串?

参见英文答案 >

Should I use Java’s String.format() if performance is important?                                    13个

更新:我通过与运算符连接进行测试,性能几乎与使用StringBuilder进行测试(结果最终).这表明,正如您在答案中提到的那样,性能较慢是由于格式分析造成的.

结论:Java的printf()不是连接和打印字符串的有效方法.应该使用运算符或者最好使用StringBuilder来获得更好的性能.

Java的printf()在创建字符串时是否使用慢速连接?即在将每个元素附加到最终的String之后它是否会创建一个新的String?

我测试了使用StringBuilder来创建字符串我获得了性能提升约4倍的运行时间.程序的这一部分在我的程序中被调用了数千次.

两个测试之间的唯一区别是以下代码块:

1)printf()(0.8秒):

System.out.printf("%d %d %d %d %d %d\n", nums[a], nums[b],

nums[c], nums[d], nums[e], nums[f]);

2)StringBuilder println()(0.2秒):

StringBuilder sb = new StringBuilder();

sb.append(nums[a]);

sb.append(' ');

sb.append(nums[b]);

sb.append(' ');

sb.append(nums[c]);

sb.append(' ');

sb.append(nums[d]);

sb.append(' ');

sb.append(nums[e]);

sb.append(' ');

sb.append(nums[f]);

System.out.println(sb.toString());

3)operaror println()(0.22秒):

System.out.println(nums[a] + " " + nums[b] + " " + nums[c] + " " + nums[d] + " "

+ nums[e] + " " + nums[f]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值