三度网教程:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

有关String的性能问题 0.2版

时间:2024-1-16作者:未知来源:三度网教程人气:


相信大家对String都非常熟悉,我们也经常要用它来做字符串的连接什么的,例如:
String a =b+c file://b,c 都是String
但是在实际的编译中却是这样:
String a=new StringBuffer().append(b).append(c).toString() 显然,在一个简单的语句中却意外的多生成了2个对象:
.StringBuffer()
.toString返回的一个String
我们比较一下这两段程序的性能:
程序片断一:
StringBuffer s=new StringBuffer();
long start = System.currentTimeMillis();
for (int i=0;i<10000;i++){
s1+="a";
}
long stop = System.currentTimeMillis();
System.out.println(stop-start);
程序片断二:
StringBuffer s=new StringBuffer();
long start=System.currentTimeMillis();
for (int i=0;i<10000;i++){
s.append("a");
}
long stop=System.currentTimeMillis();
System.out.println(stop-start);
比较一下结果,差距很明显。
至于为什么String的连接这么做,因为String无法直接改变其长度,而必须采用StringBuffer的用法。
 我们看这个例子:
片断1;
printWriter.print(x+y);//x,y为String
片断2;
printWriter.print(x);
printWriter.print(y);
你觉得那个效率高一些。自己试验一下,想想为什么。

参考:Java Performance and Scalability vol.1.
Think in java.


关键词:  有关String的性能问题  0.2版





Copyright © 2012-2018 三度网教程(http://www.3du8.cn) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版