Java的StringBuilder类


     如果程序对附加字符串的需求很频繁,不建议使用+来进行字符串的串联。可以考虑使用java.lang.StringBuilder 类,使用这个类所产生的对象默认会有16个字符的长度,您也可以自行指定初始长度。如果附加的字符超出可容纳的长度,则StringBuilder 对象会自动增加长度以容纳被附加的字符。如果有频繁作字符串附加的需求,使用StringBuilder 类能使效率大大提高。如下代码:

Java代码
  1. public   class  AppendStringTest  
  2. {  
  3.      public   static   void  main(String[] args)  
  4.             {  
  5.                    String text = "" ;  
  6.                  
  7.                    long  beginTime = System.currentTimeMillis();  
  8.                    for ( int  i= 0 ;i< 10000 ;i++)  
  9.                          text = text + i;  
  10.                    long  endTime = System.currentTimeMillis();  
  11.                    System.out.println("执行时间:" +(endTime-beginTime));  
  12.   
  13.                    StringBuilder  sb = new  StringBuilder ( "" );  
  14.                    beginTime = System.currentTimeMillis();  
  15.                    for ( int  i= 0 ;i< 10000 ;i++)  
  16.                           sb.append(String.valueOf(i));  
  17.                    endTime = System.currentTimeMillis();  
  18.                    System.out.println("执行时间:" +(endTime-beginTime));  
  19.   
  20.             }  
  21. }  
public class AppendStringTest
{
     public static void main(String[] args)
            {
                   String text = "";
               
                   long beginTime = System.currentTimeMillis();
                   for(int i=0;i<10000;i++)
                         text = text + i;
                   long endTime = System.currentTimeMillis();
                   System.out.println("执行时间:"+(endTime-beginTime));

                   StringBuilder

 sb = new StringBuilder

("");
                   beginTime = System.currentTimeMillis();
                   for(int i=0;i<10000;i++)
                          sb.append(String.valueOf(i));
                   endTime = System.currentTimeMillis();
                   System.out.println("执行时间:"+(endTime-beginTime));

            }
}

 此段代码输出: 

 执行时间:3188
 执行时间:15

 

 StringBuilder 是j2se1.5.0才新增的类,在此之前的版本若有相同的需求,则使用java.util.StringBuffer。事实上StringBuilder 被设计为与StringBuffer具有相同的操作接口。在单机非线程(MultiThread)的情况下使用StringBuilder 会有较好的效率,因为StringBuilder 没有处理同步的问题。StringBuffer则会处理同步问题,如果StringBuilder 会有多线程下被操作,则要改用StringBuffer,让对象自行管理同步问题。

 

另外,String 与StringBuffer的区别

 

   String:在String类中没有用来改变已有字符串中的某个字符的方法,由于不能改变一个java字符串中的某个单独

 

字符,所以在JDK文档中称String类的对象是不可改变的。然而,不可改变的字符串具有一个很大的优点:编译器可

 

以把字符串设为共享的。

 

   StringBuffer:StringBuffer类属于一种辅助类,可预先分配指定长度的内存块建立一个字符串缓冲区。这样使用

 

StringBuffer类的append方法追加字符 比 String使用 + 操作符添加字符 到 一个已经存在的字符串后面有效率得

 

多。因为使用 + 操作符每一次将字符添加到一个字符串中去时,字符串对象都需要寻找一个新的内存空间来容纳更大

 

的字符串,这无凝是一个非常消耗时间的操作。添加多个字符也就意味着要一次又一次的对字符串重新分配内存。使

 

用StringBuffer类就避免了这个问题.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值