您的位置:首页 > 产品设计 > UI/UE

关于String和StringBuilder、StringBuffer的区别?

2016-06-07 17:05 453 查看
package com.other;
/*Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以
储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改
变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。
StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在
单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比
StringBuffer要高。
String 类代表字符串,字符串是常量,它们的值在创建之后不能改变,String每次赋值都new一次,StringBuffer
只在开始时new一次,然后在后面追加字符串,StringBuilder效率最高,但不安全(因为是单线程)
*/
public class StringBijiao {
public static void main(String[] args) {
//===============================
// String
String tempstr = "abcdefghijklmnopqrstuvwxzy";
int times = 5000;
long lstart2 = System.currentTimeMillis();// 获取系统当前时间
String str = new String("");
// 或String str="";

for (int i = 0; i < times; i++) {
str += tempstr;
// sb.append(tempstr);
}
long lend2 = System.currentTimeMillis();
long time2 = (lend2 - lstart2);
System.out.println("26个字母相加" + times + "次用了" + time2 + " 毫秒");
// ==============================
// StringBuffer
/* String tempstr="abcdefghijklmnopqrstuvwxzy";
int times=5000;
long lstart2=System.currentTimeMillis();//获取系统当前时间
StringBuffer sb=new StringBuffer();
for(int i=0;i<times;i++){
sb.append(tempstr);
}
long lend2=System.currentTimeMillis();
long time2=(lend2-lstart2);
System.out.println("26个字母相加"+times+"次用了"+time2+" 毫秒");*/

// ==============================
// StringBuilder
/* String tempstr="abcdefghijklmnopqrstuvwxzy";
int times=5000;
long lstart2=System.currentTimeMillis();//获取系统当前时间
StringBuilder sb=new StringBuilder();
for(int i=0;i<times;i++){
sb.append(tempstr);
}
long lend2=System.currentTimeMillis();
long time2=(lend2-lstart2);
System.out.println("26个字母相加"+times+"次用了"+time2+" 毫秒");*/

}

}


Java平台提供了两种类型的字符串:String和StringBuffer/StringBuilder,它们可以储存和操作字符串。其中String是只读字符串,也就意味着String引用的字符串内容是不能被改变的。而StringBuffer/StringBuilder类表示的字符串对象可以直接进行修改。StringBuilder是Java 5中引入的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方面都没有被synchronized修饰,因此它的效率也比StringBuffer要高。

以上代码可以区别三种类型在运行时的区别,运算次数设置太小的话效果不明显,代码没有封装,注释解注后即可测试相应的类型(注释其他方法)


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: