StringBuffer类和StringBuilder

    StringBuffer:

     线程安全的可变字符序列。一个类似于 String 的字符串缓冲区

在对字符串进行修改时,不会创建新的字符串对象,StringBuffer类提供了常见的字符串操作的方法,如追加、插入、反序、替换、长度等

看例子

  1. String sting ="";
  2.         for (int i = 0; i <100; i++) {
  3.             sting=sting+"1";
  4.             }
  5.         System.out.println(sting);

分析:

  隐患,效率非常的低,我们创建了100个String对象,每循环一次都会创建一个新的,并且上一次循环创建的那个,就被废弃了 。被废弃的这些字符串造成了垃圾空间占用,jvm中的垃圾回收器(GC)就要工作,去回收这些垃圾空间

  1. StringBuffer s =new StringBuffer("");
  2.         for (int i = 0; i <100; i++) {
  3.             s.append("1");      
  4.         }
  5.         String string=s.toString();
  6.         System.out.println(string);
  7.           }

     StringBuffer和StringBuilder方法:

append()

字符串增加

  1. StringBuffer strBuffer = new StringBuffer();
  2. strBuffer.append("我爱"); //追加字符串
  3. strBuffer.append("北京");
  4. strBuffer.append("天安门");
  5. System.out.println(strBuffer.toString());//我爱北京天安门

delete()

删除字符串

  1. strBuffer.append("我爱北京天安门");
  2. strBuffer.delete(2, 4);
  3. System.out.println(strBuffer.toString());//我爱天安门

insert()

插入字符串

  1.     strBuffer.append("我爱北京天安门");
  2.     strBuffer.insert(7, "是一座庄伟的建筑"); 
  3.      System.out.println(strBuffer.toString());//我爱天安门是一座庄伟的建筑

length()

字符串长度

replace()

字符串替换

  1. strBuffer.append("我爱北京天安门");
  2.     strBuffer.replace(2, 7, "清华大学"); 
  3.         System.out.println(strBuffer.toString());//我爱清华大学

reverse()

字符反序

  1. strBuffer.append("我爱你");
  2.     strBuffer.reverse(); 
  3.         System.out.println(strBuffer.toString());//你爱我

charAt(int index)

indexOf()

字符索引

索引值存在,则返回0   索引值不存在,则返回-1

  1. strBuffer.append("我爱你");
  2.         System.out.println(strBuffer.indexOf("我",2));//-1

 

StringBuilder 和StringBuffer提供了一些对String 的内容的操作方法

StringBuilder 和StringBuffer,String 之间的关联

String因为字符串是常量,不能修改内容。在内容变化的时候会创建多个对象在内存中不断的分配空间,不断垃圾回收,效率低

StringBuffer,StringBuilder都是string的增强了,可以在原有的字符串上面做多次的变化,而创建的对象只有一个

效率要比string高很多。其中StringBuffer是一个线程安全类,在使用的时候会做线程同步,效率比StringBuilder要低一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值