jdk不同版本对String拼接的优化分析
2017-02-03 16:38
88 查看
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. 测试循环中字符串拼接优化
-
jdk5
-
jdk6
-
jdk7
-
jdk8
结论:
对比jdk5-8所有版本下的反编译字节码,发现结果相同,证明字符串拼接从jdk5开始就已经完成了优化,并且没有进行新的优化。 - 详细看反编译后的字节码,8开始进入for循环比较阶段,11new一个新的StringBuilder,为了优化之后的String+操作。34循环结束,重新到5,将会在11重新new一个StringBuilder。
- 循环外字符串拼接可以直接使用String的+操作,没有必要通过StringBuilder进行append.
- 由于循环中每次都会回到5,所以会不停的创建StringBuilder对象,除了循环体后就成了无效对象,这样会产生大量的垃圾对象。所以好的做法是在循环外声明StringBuilder对象,在循环内进行手动append。不论循环多少层都只有一个StringBuilder对象。
相关文章推荐
- jdk不同版本对String拼接的优化分析
- jdk版本不同引起的问题分析
- Integer.valueOf(String)不同JDK版本的差异
- Java jdk对String字符串拼接的优化
- Java关于浮点数的舍入法与String.format()在不同jdk版本的区别
- tomcat优化配置及默认引用不同版本JDK配置
- tomcat6优化配置及默认引用不同版本JDK配置
- Java不同JDK版本下地图图像处理效率对比分析
- JDK 不同版本编译问题
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- Dragonboard410c Android源代码编译:ubuntu16.04 安装使用不同版本JDK
- 为Spark Application指定不同的JDK版本
- 单台服务器部署和安装多个不同版本的Tomcat与Jdk
- Mybatis之拦截器原理(jdk动态代理优化版本)
- Eclipse配置不同JDK版本遇到的一些问题与总结
- JDK和Tomcat部署时,版本不同的问题解决
- Windows下不同版本的JDK共存
- SimpleDateFormat在jdk不同版本的差异
- JDk版本不同对系统的影响
- 【jdk1.8】String源码分析