1. 测试demo代码

  • 测试循环中字符串拼接优化
public class ForTest {
public static void main(String[] args) {
String a = "0";
for (int i = 1; i < 10; i++) {
a = a + "i";
}
System.out.println(a);
}
}

2. 测试循环中字符串拼接优化

  1. jdk5

  2. jdk6

  3. jdk7

  4. jdk8

    结论:

    1. 对比jdk5-8所有版本下的反编译字节码,发现结果相同,证明字符串拼接从jdk5开始就已经完成了优化,并且没有进行新的优化。
    2. 详细看反编译后的字节码,8开始进入for循环比较阶段,11new一个新的StringBuilder,为了优化之后的String+操作。34循环结束,重新到5,将会在11重新new一个StringBuilder。
    3. 循环外字符串拼接可以直接使用String的+操作,没有必要通过StringBuilder进行append.
    4. 由于循环中每次都会回到5,所以会不停的创建StringBuilder对象,除了循环体后就成了无效对象,这样会产生大量的垃圾对象。所以好的做法是在循环外声明StringBuilder对象,在循环内进行手动append。不论循环多少层都只有一个StringBuilder对象。

最新文章

  1. IOS开发基础知识--碎片16
  2. py2exe 打包scipy时遇到的问题
  3. qml android 的一个例子qtHangMan
  4. VC++代码的汇编分析(一)
  5. Android性能测试工具 Emmagee
  6. [译]C++如何切分字符串
  7. 关于苹果真机 getFullYear()返回值为NAN的问题
  8. meta小结
  9. laravel 配置MySQL读写分离
  10. JSON.stringify()的不常见用法
  11. ubuntu window 10 双系统
  12. SqlServer误删数据恢复
  13. HA主备路由模式的原理 + HA和负载均衡的区别
  14. Pygame安装教程
  15. 谈谈java多线程(一)
  16. 数据迁移工具Sqoop和DataX功能比较
  17. [CodeForce 801A] Vicious Keyboard
  18. AC自动机——多个kmp匹配
  19. 51nod 1258 序列求和 V4
  20. 安装Windows Installer服务

热门文章

  1. Python-cookies
  2. AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别
  3. Promise和异步编程
  4. 一种轻便且灵活的js模板的思路
  5. kafka使用场景
  6. Java编写的日历,输入年月,输出这个月的日期与星期
  7. python--DenyHttp项目(2)--ACM监考客户端1.0版
  8. 2.ssh密钥登陆(ssh无密码登陆)
  9. noip冲刺赛第五次考试
  10. java学习笔记随记