Java之StringBuffer的学习

StringBuffer:
            线程安全的可变字符序列
 
 
  面试题:(重点)   StringBuffer和String的区别:
    前者是一个可变的字符序列,后者是不可变的字符序列
   如果从内存角度考虑,String定义的时候,会在常量池中开辟空间,比较耗费内存
   而StringBuffer,字符串缓冲区(里面存储的全部都是字符串),它会释放掉

    

 StringBuffer的构造方法:

 StringBuffer() :无参构造的形式,初始容量16

 StringBuffer(int capacity) :指定容量构造一个字符串缓冲区
 StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
 
 StringBuffer的获取功能:
  public int length()返回长度
  public int capacity()返回当前容量 (如果超过容量,系统自动分配(存储字符串的时候,英文的))
    
StringBuffer sb = new StringBuffer("hello   java");
System.out.println(sb.length());

  StringBuffer的添加功能:(实际开发中用的多)
   public StringBuffer append(String/boolean....) :在字符串缓冲区中追加数据(在末尾追加),并且返回字符串缓冲区本身
        public StringBuffer insert(int offset,String str):将当前str字符串添加到指定位置处,它返回字符串缓冲区本身

 StringBuffer的删除功能:
  

        public StringBuffer deleteCharAt(int index):移除指定位置处的字符..
        public StringBuffer delete(int start,int end):移除从指定位置处到end-1处的子字符串...

  

 StringBuffer的反转功能:
   public StringBuffer reverse() :将缓冲区中的字符序列反转取代,返回它(字符串冲)本身
 
 StringBuffer的截取功能:
  public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值不在是缓冲区本身,而是一个新的字符串
  public String substring(int start,int end) :从指定位置开始到指定位置结束截取,包前不包后,返回值不在是缓冲区本身,而是一个新的字符串

注释: 两种截取都是取的是截取的部分,而且遵循包前不包后。

   StringBuffer的替换功能:
   public StringBuffer replace(int start,int end,String str) 
   从指定位置到指定位置结束,用新的str字符串去替换,返回值是字符串缓冲区本身
 
  String和StringBuffer之间的相互转换
        
public class StringBufferTest {  
  
    public static void main(String[] args) {  
          
        //String---StringBuffer   
        String s = "hello";  
//      StringBuffer sb = s ;不行  
//      StringBuffer sb = "hello";  
        // 方式1 :带参构造,StringBuffer(String str)  
        StringBuffer sb = new StringBuffer(s) ;
        //方式2:可以通过无参构造创建字符串缓冲区对象,给缓冲区中追加内容  
        StringBuffer sb2 = new StringBuffer() ;  
        sb2.append(s) ;  
        System.out.println("sb:"+sb);  
        System.out.println("sb2:"+sb2);  
        System.out.println("----------------------------");  
          
        //StringBuffer---String  
        StringBuffer buffer = new StringBuffer("world") ;  
        //方式1:public String(StringBuffer buffer)分配一个新的字符串,它包含字符串缓冲区参数中当前包含的字符序列  
        String str = new String(buffer) ;  
          
        //方式2:StringBuffer的功能:public String toString()返回此序列中数据的字符串表示形式  
        String str2 = buffer.toString() ;  
          
        System.out.println("str:"+str);  
        System.out.println("str2:"+str2);  
    }  
}  

扩展知识:

1 StringBuffer,String,StringBuilder的区别:
StringBuffer和StringBuilder都是一个可变的字符序列,提供一个缓冲区.(两者都看做容器)
StringBuffer:线程安全的,同步的,执行效率低
StringBuilder:线程不安全的,不同步的,执行效率高,并且单线程中优先采用StringBuilder
StringBuffer 执行效率虽然低,但是由于String类型,并且他可变的字符序列,提供了缓冲区


2 StringBuffer和数组的区别:

数组:
它是可以存储多个数据的容器,并且多个数据的类型必须一致
数组长度功能:length属性

StringBuffer : 它是容器,它在缓冲区始终存储的只能字符串类型的数据
获取缓冲区的长度:length()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值