String字符串连接

只会百度的程序员 发布于 2012/11/28 10:18
阅读 1K+
收藏 2

写了这么个代码,已经十几分钟,还没出来结果,急啊!

public static void main(String[] args) {
	connStr();
}
public static void connStr(){
	String s1 = new String();
	long start = new Date().getTime();
	for(int i = 0; i< 1000000; i++){
		s1 += i;
	}
	long end = new Date().getTime();
	System.out.println(end - start);
		
	StringBuffer s2 = new StringBuffer();
	start = new Date().getTime();
	for(int i = 0; i< 1000000; i++){
		s2.append(i);
	}
	end = new Date().getTime();
	System.out.println(end - start);
		
	StringBuilder s3 = new StringBuilder();
	start = new Date().getTime();
	for(int i = 0; i< 1000000; i++){
		s3.append(i);
	}
	end = new Date().getTime();
	System.out.println(end - start);
}

以下是问题补充:

@只会百度的程序员:执行结果: 23029678//6.4小时 78 79 (2012/11/28 16:43)
@只会百度的程序员:看你们以后还敢不敢用String+来连接字符串了! (2012/11/28 16:44)
加载中
0
只会百度的程序员
只会百度的程序员

日啊,终于出来结果了,等到16点啊!!!

23029678    // 6.4个小时啊
78
79

0
情天大圣
情天大圣
调整下顺序,将String的放在最后就会看到效果了!
0
震秦
震秦
不至于吧? 需要十几分钟?
0
只会百度的程序员
只会百度的程序员

引用来自“震秦”的答案

不至于吧? 需要十几分钟?
1个小时了,还没出来。。。。会不会字符串过长了???
0
逝水fox
逝水fox

 说StringBuilder比StringBuffer在单线程好因为不需要同步锁。但是一直的疑问,JVM不是会做逃逸分析吗?

0
using
using

s1 += i;

就很慢。。我以前试过你这样的。

0
只会百度的程序员
只会百度的程序员
今天又来玩这玩意,没想到可以这么慢。。。还没出来结果,程序运行开始时间是:9:56
0
智深
智深

String s1 = new String();

for(int i = 0; i< 1000000; i++){

    s1 += i;

}

这个循环执行会很慢;i和s1类型不匹配,需要做转换。

0
只会百度的程序员
只会百度的程序员
是慢啊,14:50了,还没出结果。。。。不知道有没有死掉。。。
loki_lan
loki_lan
哥佩服你的毅力。。。
0
如风随影
如风随影
你明不明白 
for(int i = 0; i< 1000000; i++){
08         s1 += i;


}

这里的意思,看看think in java 4 里面有你要的答案!

只会百度的程序员
只会百度的程序员
我不知道你说的是哪个意思。。。。我就是来试试String来连接到底有多慢,我知道i要转String,但我只是要看它有多慢,i产生的影响我不关注。就是玩玩,不是研究。。。能不能把你说的那个意思跟我说说,感兴趣!
返回顶部
顶部