StringBuilder类详解和String、StringBuffer、StringBuilder的操作效对比

版权声明:尊重原创,码字不易,转载需博主同意。 https://blog.csdn.net/qq_34626097/article/details/84708495

StringBuilder类详解和String、StringBuffer、StringBuilder的操作效对比

1. StringBuilder类

  1. StringBuilder 和 StringBuffer 非常类似,均代表可变的字符序列,而且方法也一样
    ① String:不可变字符序列
    ② StringBuffer:可变字符序列、效率低、线程安全
    ③ StringBuilder(JDK1.5):可变字符序列、效率高、线程不安全
    ④ 点击进入StringBuffer类的使用和详解底层实现、String和StringBuffer的区别、StringBuffer的常用方法
  2. String使用陷阱:
    string s=“a”; //创建了一个字符串 s=s+“b”; //实际上原来的"a"字符串对象已经丢弃了,现在又产生了一个字符串s+“b”(也就是"ab")。如果多次执行这些改变串内容的操作,会导致大量副本字符串对象存留在内存中,降低效率。如果这样的操作放到循环中,会极大影响程序的性能。

2. 比较一下String、StringBuffer、StringBuilder三者在插入的时候的效率。

  1. 对比Demo
	//对比String,StringBuffer、StringBuilder三者之间的插入效率
	@Test
	public void test1() {
		//定义String、StringBuffer、StringBuilder对象
		String text = "";
		long startTime = 0L;
		long endTime = 0L;
		StringBuffer buffer = new StringBuffer("");
		StringBuilder builder = new StringBuilder("");
		//往StringBuffer对象里面添加20000个字符
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		buffer.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuffer的执行时间:"+(endTime-startTime));
		//往StringBuilder对象里面添加20000个字符
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		builder.append(String.valueOf(i));}
		endTime = System.currentTimeMillis();
		System.out.println("StringBuilder的执行时间:"+(endTime-startTime));
		//往String对象添加20000个字符
		startTime = System.currentTimeMillis();
		for(int i = 0;i<20000;i++){
		text = text + i;}
		endTime = System.currentTimeMillis();
		System.out.println("String的执行时间:"+(endTime-startTime));
	}
  1. 输出结果
    输出结果
  2. 得出结论是:操作效率:StringBuilder》StringBuffer》String

猜你喜欢

转载自blog.csdn.net/qq_34626097/article/details/84708495
今日推荐