Java中StringBuilder的清空方法比较

摘自:http://blog.chinaunix.net/uid-20745012-id-271466.html

StringBuilder 没有提供clear或empty方法。

清空有3种方法:

  1)新生成一个,旧的由系统自动回收

  2)使用delete

  3)使用setLength

将三种方法循环1000万次,代码:

/**
 * @作者 whs
 * @创建日期 2015年1月30日
 * @版本 V 1.0
 */
package strdemo;

public class StrBuilder {

	static String a;
	static long time;

	public static void main(String[] args) {
		StringBuilder sb = new StringBuilder();
		StringBuilder sb2=new StringBuilder();
		time = System.currentTimeMillis();
		for(int i=0;i<10000000;i++){
			sb.delete(0, sb.length());
			sb.append("someThi1ng");
			sb.append("someThi2ng");
			sb.append("someThi3ng");
			sb.append("someThi4ng");
			sb.append("someThi5ng");
			sb.append("someThi6ng");
			a = sb.toString();
		}
		System.out.println("Way1="+(System.currentTimeMillis()-time));

		time = System.currentTimeMillis();
		for(int i=0;i < 10000000;i++){
			sb2.setLength(0);
			sb2.append("someThin1g");
			sb2.append("someThin2g");
			sb2.append("someThin3g");
			sb2.append("someThin4g");
			sb2.append("someThin5g");
			sb2.append("someThin6g");
			a = sb2.toString();
		}
		System.out.println("Way2="+(System.currentTimeMillis()-time));

		time=System.currentTimeMillis();
		for(int i=0;i < 10000000;i++){
			StringBuilder sb3=new StringBuilder();
			sb3.append("someThing1");
			sb3.append("someThing2");
			sb3.append("someThing3");
			sb3.append("someThing4");
			sb3.append("someThing5");
			sb3.append("someThing6");
			a=sb3.toString();
		}
		System.out.println("Way3="+(System.currentTimeMillis()-time));

	}
}

注意append的字符串要都不相同,否则会因为java 的String  pool对结果造成影响(即Way1好于Way2)
结果:

  1. Way1=1672
    Way2=1632
    Way3=2532

可以将各方法多重复几次,点到顺序,等 总体来看:Way2好于Way1好于Way3

时间: 2024-10-08 18:49:15

Java中StringBuilder的清空方法比较的相关文章

Java中StringBuilder的清空方法比較

StringBuilder 没有提供clear或empty方法. 清空有3种方法: 1)新生成一个,旧的由系统自己主动回收 2)使用delete 3)使用setLength 将三种方法循环1000万次,代码: 1.public class sbbm { 2. 3.    static String a; 4.    static long time ; 5.    public static void main( String[] args ) throws Exception { 6. 7. 

全面解释java中StringBuilder、StringBuffer、String类之间的关系

http://www.jb51.net/article/33398.htm String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间,StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象,StringBuffer和StringBuilder类功能基本相似 1. String 类  String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不

java中stringBuilder的用法

java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新的 String对象相关的系统开销可能会非常昂贵.如果要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类.例如,当在一个循环中将许多字符串连接在一起时,使用 StringBuilder类可以提升性能. 通过用一个重载的

Java中vector的使用方法

Vector的使用 vector类底层数组结构的,它包含可以使用整数索引进行访问的组件.不过,vector的大小可以根据需要增大或缩小,以适应创建vector后进行添加或移除项的操作,因此不需要考虑元素是否越界或者会不会浪费内存的问题. 由vector的iterator和listIterator方法所返回的迭代器是快速失败的:也即是它不能并发执行操作.如果在迭代器创建后的任意时间从结构上修改了向量(通过迭代器自身的remove或add方法之外的任何其他方式),则迭代器将抛出ConcurrentM

Java中Integer类的方法

字段摘要 static int MAX_VALUE              保持 int 类型的最大值的常量可取的值为 231-1. static int MIN_VALUE              保持 int 类型的最小值的常量可取的值为 -231. static int SIZE              以二进制补码形式表示 int 值的位数. static Class<Integer> TYPE              表示基本类型 int 的 Class 实例. 构造方法摘要

java中的jdbc连接数据库方法及应用

jdbc连接数据库的口诀:猪脸特直观 import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo03 { public static void main(String[] args) thr

java中substring的使用方法

str=str.substring(int beginIndex);截取掉str从首字母起长度为beginIndex的字符串,将剩余字符串赋值给str: str=str.substring(int beginIndex,int endIndex);截取str中从beginIndex開始至endIndex结束时的字符串,并将其赋值给str; 下面是一段演示程序: public class StringDemo{ public static void main(String agrs[]){ Str

转- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

Java中循环声明变量方法

Java循环声明变量 之前想这样做,但是网上一直搜索不到,下面是我的方式 项目中 // 得到需要查询外表的数量,然后分别创建缓存,插入数据多的时候如果编码在缓存里面,就不需要再去查询数据库了.key:code/value:pk // 根据"数据来源"有多少非空的 就创建几个,使用 "数据来源字段"+Cache 当cacheMap的key Map<String, Map<String, String>> cacheMap =new HashMa