您的位置:首页 > Web前端

String 和StringBuffer的性能差别

2013-10-23 09:14 337 查看
今天终于明白了两者之间的差别有多大了。。。下面是个例子看了就懂了

package testForWork;

/**
* @author openks
* @createTime 2013-10-23上午08:50:29
* String 和StringBuffer的区别
* 1.String对象是固定长度的 每对字符串处理一次就会新建一个String对象
* 2.StringBuffer是不顾定长度的可以对字符串进行处理(添加或者删除部分字符)
* 3.String覆盖了equals方法和hashCode方法,
*   而StringBuffer没有覆盖equals方法和hashCode方法,
*   所以,将StringBuffer对象存储进Java集合类中时会出现问题。
*/
public class TestDifferenceBetweenStringAndStringBuffer {

public static void main(String[] args) {
int m =50000;
getStringBuffer(m);
getString(m);
}
public static void getString(Integer m){
long start = System.currentTimeMillis();
String str="";
for (int i = 0; i < m; i++) {
str+=i;
}
long end = System.currentTimeMillis();
System.out.println("String遍历"+m+"次用时(毫秒数)"+(end-start));
}
public static void getStringBuffer(Integer m){
long start = System.currentTimeMillis();
StringBuffer str=new StringBuffer("");
for (int i = 0; i < m; i++) {
str.append(i);
}
long end = System.currentTimeMillis();
System.out.println("StringBuffer遍历"+m+"次用时(毫秒数)"+(end-start));
}
}

StringBuffer遍历50000次用时(毫秒数)16
String遍历50000次用时(毫秒数)25078

上面是内容和结果 区别真的不是一般的大,这还只是5万次的差别,如果数据量再大的话。性能问题就更能显示出来了

以后对字符串处理必须要按照StringBuffer来处理了 其实转换方法还蛮简单地 StringBuffer转String

StringBuffer sb = new StringBuffer("哈哈");
String s = sb.toString();
System.out.println(s);//输出哈哈

String 转StringBuffer

String s = "abc";
StringBuffer sb = new StringBuffer(s);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: