首页 > 代码库 > [Java Performance] 字符串拼接注意事项
[Java Performance] 字符串拼接注意事项
字符串拼接(String Concatenation)
// 编译器优化前 String answer = integerPart + "." + mantissa; // 编译器优化后 String answer = new StringBuilder(integerPart).append(".").append(mantissa).toString();
因为编译器会对字符串的拼接操作进行优化,所以在同一条语句中使用字符串拼接操作对性能并没有负面影响。正因为编译器在幕后的优化,在任何场景下都使用StringBuilder替代“+”操作符来进行字符串拼接是没有必要的。
但是,当字符串的拼接是由多条语句(或者循环)完成的,就有问题了:
// 编译器优化前 String answer = integerPart; answer += "."; answer += mantissa; // 编译器优化后 String answer = new StringBuilder(integerPart).toString(); answer = new StringBuilder(answer).append(".").toString(); answer = new StringBuilder(answer).append(mantissa).toString();
被编译器优化的代码中,中间的String对象以及StringBuilder对象实际上都是不需要的。此时,可以考虑将以上的拼接语句合并成一条拼接语句。或者直接显式地使用StringBuilder对象。
总结
- 当字符串拼接使用一条语句完成时,性能和使用StringBuilder时相当。
- 对于使用多条语句完成字符串拼接时,考虑合并这些语句或者显式使用StringBuilder。
[Java Performance] 字符串拼接注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。