Java中字符串拼接是使用 + 还是 StringBuffer

    直奔主题,一般在拼接是我们都是习惯使用 + ,当然如果只是短呃字符串拼接 使用 + 是毋庸置疑的,为什么呢?

主要就是:自己操作方便,开发速度快。其实就是方便。

    但是如果是大范围的 字符串拼接 ,比如下面的代码 做的测试

long currentTimeMillis = System.currentTimeMillis();
		StringBuffer stringBuffer = new StringBuffer();
		for(int i=0;i<100000;i++) {
			stringBuffer.append(i);
		}
		long currentTimeMillis1 = System.currentTimeMillis();
		System.out.println(currentTimeMillis1 - currentTimeMillis);
		long currentTimeMillis2 = System.currentTimeMillis();
		String bb="";
		for(int i=0;i<100000;i++) {
			bb +=i;
		}
		long currentTimeMillis3 = System.currentTimeMillis();
		System.out.println(currentTimeMillis3-currentTimeMillis2);

结果真是大大的不同,速度相差很大。  6,35272。我测试的是这样的结果,几次测试都差不多的速度。可见 在打范围的 使用 + 所带来的速度,当然这个不只是速度问题,也关于 内存问题  查看源码可以得到 :一个 + 号 就会 new StringBuffer(); 虽然Java有GC 但是这个你无法判断它多久回收,所以在使用 + 内存肯定会 一路飙升。所以从理论上说 只要有 拼接字符串就使用 StringBuffer 是完全没有问题的。再加上内存显示图:Java中字符串拼接是使用 + 还是 StringBuffer_第1张图片

在峰值的显示就是 在运行是的CPU 情况,所以还是慎用 + 

    在最后是我要说的是其实  StringBuilder 来连接时,速度更快一些,但是在拼接的时候数据量不大的时候差别不大,即使在百万级的拼接的时候也只是 5 毫秒左右的差距,一般的小项目无所谓,但是大数据量的情况还是有差距的。

 

你可能感兴趣的:(Java)