博主是一名学生,
对一些知识有着自己的理解...也是为了不说多余的话了
String/StringBuffer/StringBuilder三则之间的区别
String:引用类型,表示字符串.对字符串进行拼接这里使用代码演示
//演示String对字符串的拼接
String str = " ";
//String拼接开始时间
long start = System.currentTimeMillis();
for(int i = 1 ; i < 100000 ; i++ ){
str+=i;
}
//String拼接结束时间
long end = System.currentTimeMillis();
System.out.println("执行程序所需要的时间:"+(end-start));
StringBuffer也是表示字符串.用于字符串的拼接
/使用StringBuffer拼接
String str = " ";
//拼接开始时间
long current = System.currentTimeMillis();
StringBuffer sbf = new StringBuffer();
for (int j = 0; j < 100000; j++) {
sbf.append(j).append(str);
}
long endTime = System.currentTimeMillis();
System.out.println("改代码执行的时间:"+(endTime-current));
StringBuilder用于字符串的拼接:
//使用StringBuffer拼接
String str2 = " ";
//拼接开始时间
long current1 = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int j = 0; j < 100000; j++) {
sb.append(j).append(str2);
}
long endTime1 = System.currentTimeMillis();
System.out.println("改代码执行的时间:"+(endTime1-current1));
StringBuffer和StringBuilder拼接的速度几乎相同.那么到底该用哪个.
个人认为使用StringBuffer比较好.StringBuilder存在着线程不安全的问题.可以查看原代码
StringBuffer都使用了synchronized字段进行修饰,synchronized是为了在多线程环境中保证线程的安全,而StringBuilder没有使用synchronized修饰不建议使用.
而String拼接之所以很慢.是因为没拼接一次就会创建一次对象,这样大大较低了程序运行的速度,
而在实际开发中也不建议使用String进行拼接
如果对上面的有什么读到的见解,欢迎留言!