繁体中文
设为首页
加入收藏
当前位置:JSP技术首页 >> 资料/其它 >> 有关String的性能问题 0.2版

有关String的性能问题 0.2版

2005-01-15 08:00:00  作者:  来源:互联网  浏览次数:0  文字大小:【】【】【
简介:相信大家对String都非常熟悉,我们也经常要用它来做字符串的连接什么的,例如: String a =b+c file://b,c 都是String 但是在实际的编译中却是这样: String a=new StringBuffer().append(b).append(c).toString...

相信大家对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.

责任编辑:admin
相关文章