jdk不同版本对String拼接的优化分析
来源:互联网 发布:linux远程连接xrdp 编辑:程序博客网 时间:2024/05/21 05:37
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对象。
1 0
- jdk不同版本对String拼接的优化分析
- JDk版本不同对系统的影响
- jdk版本不同引起的问题分析
- Integer.valueOf(String)不同JDK版本的差异
- 不同版本Eclipse对JDK版本要求
- 不同版本Eclipse对JDK版本要求
- jdk 不同版本的同步
- Java关于浮点数的舍入法与String.format()在不同jdk版本的区别
- c#中string拼接的效率分析
- c#中string拼接的效率分析
- jar包对不同JDK版本的兼容性问题:Unsupported major.minor version 52.0
- tomcat优化配置及默认引用不同版本JDK配置
- Linux下切换不同版本的JDK
- maven打包不同jdk版本的包
- SimpleDateFormat在jdk不同版本的差异
- 不同版本的Jdk 配置方法
- eclipse中切换不同版本的jdk
- 不同版本JDK对应的major号
- 学 Win32 汇编[28] - 跳转指令: JMP、JECXZ、JA、JB、JG、JL、JE、JZ、JS、JC、JO、JP 等
- 1096. Consecutive Factors (20)
- Git Community Book 中文版 rebase
- 剑指offer33
- shell脚本时间操作
- jdk不同版本对String拼接的优化分析
- do{...}while(0)的意义和用法
- 转-Memcache知识点梳理
- 2016年我所涉足的技术栈大盘点
- JNI学习
- 多表链接 Left join
- 选好”车轮”
- Android 日常开发技术经验 60 条
- 历届试题 核桃的数量