Java--字符串生成器

可变的字符序列StringBuilder类

相比String类:

在String类下创建成功的字符串对象,其内容是不能被改变和编译的。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的String实例,会在内存中创建新的字符串对象。若重复地对字符串进行修改,将极大地增加系统开销。

StringBuilder类创建方法:(同String类)

StringBuilder builder = new StringBuilder("")

新创建的StringBuilder对象初始容量是16个字符,如果附加字符超过可容纳的长度,则StringBuilder对象将自动增加长度以容纳被附加的字符。

若要只用StringBuilder最后输出字符串结果,可使用toString()方法

StringBuilder bf = new StringBuilder("abc");
System.out.println(bf.toString());

1)append(content) 方法,向字符串生成器中追加内容,可接受任何类型数据,如int、boolean、char、String、double或者另一个字符串生成器。content为要追加的内容

2)insert(int offset, arg) 方法,向字符串生成器中的指定位置插入数据内容,可插入int、float、char和boolean等基本数据类型或其他对象。offset为插入位置索引,arg为插入内容

StringBuilder bf = new StringBuilder("hello");
bf.insert(2,"AB");
System.out.println(bf.toString());  //输出结果为"heABllo"

3)delete(int start, int end) 方法,移除从 start 开始到 (end-1)索引的字符。若start等于end,不做任何更改。

StringBuilder bf = new StringBuilder("hello");
bf.delete(2,4);
System.out.println(bf.toString());  //输出结果为"heo"

接下来,用一段代码来验证字符串操作和字符串生成器操作的效率:

public class stringB {
	public static void main(String[] args) {
		String str = "";	//创建空字符串
		//定义对字符串执行操作的起始时间
		long startTime = System.currentTimeMillis();
		for(int i=0; i<100000;i++) {
			str = str+i;
		}
		//定义对字符串操作后的时间
		long endTime = System.currentTimeMillis();
		long time = endTime - startTime;
		System.out.println("String消耗的时间: "+time);
		
		StringBuilder builder= new StringBuilder("");	    //创建空字符串生成器
		startTime = System.currentTimeMillis();
		for(int i=0; i<100000;i++) {
			builder.append(i);
		}
		endTime = System.currentTimeMillis();
		time = endTime - startTime;
		System.out.println("StringBuilder消耗的时间: "+time);
	}

}

eclipse中运行代码结果:

猜你喜欢

转载自blog.csdn.net/qq_42182367/article/details/81909999