StringBuilder 详解

Java中java.lang.StringBuilder类与与String类的功能类似,它们有什么区别呢?
String 对象是不可改变的,每次使用 System.String 类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间,如果是需要对字符串执行重复修改,就要不断的创建新的 String 对象。如果要修改字符串而不创建新的对象,则可以使用StringBuilder 类。如:在一个循环中将许多字符串连接在一起时,使用 StringBuilder 类可以提升性能。

 

一个String对象的长度是固定 的,不能更改其内容。当你用“+”连接两个字符串从而创建新的字符串时,你其实创建了一个新的String对象。如果频繁的这样子操作,就会产生大量的垃圾并且效率低。

这种情况下可以考虑使用StringBuilder。

 

/*
 * @author    junife
 * @date      2013-02-19
 * @fuction   StringBuilder 用法
 */
public class StringBuilderTest 
{
	public static void main(String[] args) 
	{

		String text = "testContent";
		long beginTime = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) 
		{
			text = text + i;
		}
		long endTime = System.currentTimeMillis();
		System.out.println("使用String操作符(+)的执行时间:" + (endTime - beginTime));

		
		StringBuilder stringBuilder = new StringBuilder();
		beginTime = System.currentTimeMillis();
		for (int i = 0; i < 10000; i++) 
		{
			stringBuilder.append(i);
		}
		endTime = System.currentTimeMillis();
		System.out.println("使用StringBuilder的执行时间:" + (endTime - beginTime));
	}
}
/*
 * 执行结果:
 * 使用String操作符(+)的执行时间:301
 * 使用  StringBuilder 的执行时间:1
 */

 

 输出的执行时间肯定是第一次大,i值越大差距越大。
通过用一个重载的构造函数方法初始化变量,可以创建 StringBuilder 类的实例,如:
StringBuilder mystr = new StringBuilder("Welcome!");
StringBuilder 的属性
Capacity:当前为实例分配的字符数量。默认容量是16.
Length: 对象内的字符串长度的值

StringBuilder的方法
Append:方法可用来将文本或对象的字符串表示形式添加到由当前 StringBuilder 对象表示的字符串的结尾处。
Insert:方法将字符串或对象添加到当前 StringBuilder 中的指定位置。如:bildertxt.insert(2,"insert");
replace(int start, int end, String str):用str替换StringBuilder中指定位置的字符。
StringBuilder.Remove:从当前 StringBuilder 对象中移除指定数量的字符。
delete(int start, int end)、deleteCharAt(int index):删除从start到end间的字符(不包括end)。
StringBuilder.reverse():倒序排列字符。
ToString( ):转换为字符串输出

StringBuilder是jdk5.0中新增的类,在之前使用的是java.lang.String.Buffer。事实上,StingBuilder被设计为与StringBuffer具有相同操作的接口。在单机非多线程的情况下使用StringBuilder会有较高的效率,这是因为StringBuilder没有处理同步(Synchronized)问题。而StringBuffer则会处理同步问题,其在多线程中应用较多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值