1. plus方式

当左右两个量其中有一个为String类型时,用plus方式可将两个量转成字符串并拼接。

String a="";
int b=0xb;
String c=a+b;
2. concat方式

当两个量都为String类型且值不为null时,可以用concat方式。

String a="a";
String b="b";
String c= a.concat(b);
理论上,此时拼接效率应该最高,因为已经假定两个量都为字符串,做底层优化不需要额外判断或转换,而其他方式无论如何优化,都要先走到这一步。

3. append方式

当需要拼接至少三个量的时候,可以考虑使用StringBuffer#append()以避免临时字符串的产生

StringBuffer buf=new StringBuffer()
buf.append("a");
if(someCondition){
buf.append("b");
}
buf.append("c");
String d=buf.toString();
当a,b,c拼接起来会很长时,可以给在构造器中传入一个合适的预估容量以减少因扩展缓冲空间而带来的性能开销。

StringBuffer buf=new StringBuffer(a.length()+b.length()+c.length());
JDK对外提供的一些涉及可append CharSequence的参数或返回值类型往往是StringBuffer类型,毕竟安全第一,而StringBuffer大多数情况(包括append操作)线程安全。

若不会出现多线程同时对一实例并发进行append操作,建议使用非线程安全的StringBuilder以获得更好性能

4. 其他

若需拼接至少三个量,只用一个连续拼接的语句就可完成时,从使代码简洁角度考虑,用plus方式。

String a="a";
String b="b";
String c="c";
String d=a+b+c;
此时,第4句经JDK编译后其字节码(或)会自动优化为等效于下列代码编译后的字节码。

String d=new StringBuilder().append(a).append(b).append(c).toString();
若采用模板+参数来替换占位符的方式或需同时对要拼接日期/数字进行格式化,可以用String.format()来实现
---------------------

原文:https://blog.csdn.net/fei7837226/article/details/79377906

最新文章

  1. gen_server port 调用receive_match 问题
  2. iOS 微信支付总结
  3. HDU 4811 Ball -2013 ICPC南京区域现场赛
  4. py操作mysql
  5. poj 2342 Anniversary party
  6. 214. Shortest Palindrome
  7. 快速扫描文本文件,统计行数,并返回每一行的索引位置(Delphi、C#)
  8. 深入浅出理解QTimeLine类
  9. CPU核心数
  10. java的大数类
  11. 在CI中实现持续Web安全扫描
  12. python 带小数点时间格式化
  13. Cocos2d-x 实战
  14. java--利用DecimalFormat.java类将给定的数字进行格式化
  15. js数据类型转换 ----流程控制
  16. android.support.v4与Android.support.v7
  17. webstorm 2017 激活
  18. SQL 正则表达式 `(user_log_acct)?+.+`
  19. Effective STL读书笔记
  20. virtualenv 使用

热门文章

  1. C#(WPF和WinForm)在普通类中调用到主线程的方法,SynchronizationContext的用法。
  2. mySQL内存及虚拟内存优化设置[转]
  3. HttpLuaModule——翻译(Nginx API for Lua)
  4. 来自Unix/Linux的编程启发录
  5. Struts 2相关配置与基本操作演示(案例Demo)
  6. Webwork【01】Webwork与 Struct 的前世今生
  7. Android开发经典笔试面试题汇总(持续更新中)
  8. 安装xenapp后,非管理员连接RDP出现桌面当前不可用的解决方法
  9. Asp.net中GridView使用详解(引)【转】
  10. Mysql5.6 make 错误以及解决办法