5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:厦门
性别:先生
最后登录:2015-09-10
http://bluelover.5d.cn/
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2006/03/19 | 原来以前一直想错了
类别(我的文档[原创])
|
评论
(2)
|
阅读(53)
|
发表于 12:03
以前经常看一些优化的文章,一直以为+在String之间的累加扮演着罪恶的角色以为"111" + "222"累加都会创建一个StringBuffer,其实不然,只有在累加的中间有变量的时候才会创建一个StringBuffer,字符串常量之间的累加并不会创建一个StringBuffer,字符串常量之间的累加不用大惊小怪的
如
---------------
public String toString1() {
return "111" + "222" + "333" ;
}
转化成字节码是
public toString1() : String
L0 (0)
LDC "111222333"
ARETURN
L1 (3)
---------------
public String toString1() {
return "111" + "222" + "333" + this.s1;
}
转化成字节码是
public toString1() : String
L0 (0)
NEW StringBuffer
DUP
LDC "111222333"
INVOKESPECIAL StringBuffer.<init>(String) : void
ALOAD 0: this
GETFIELD T.s1 : String
INVOKEVIRTUAL StringBuffer.append(String) : StringBuffer
INVOKEVIRTUAL StringBuffer.toString() : String
ARETURN
L1 (10)
-------------------
如果用一个String变量在一个循环里使用+累加字符串,每次循环就会重新创建一个StringBuffer,效率就会耕地了
0
评论
Comments
日志分类
首页
[148]
小新的博客[原创]
[70]
我的文档[原创]
[33]
杂项
[5]
企业信息化
[9]
数据库[原创]
[12]
文档转载
[17]
配置管理
[2]