Java语言-10:StringBuffer的相关知识

1、 StringBuffer:线程程安全的可变字符序列
 
  1)线程
  
  2)线程的安全问题,是难点(多线程属于难点) 多线程------>解决了多线程安全问题------>是死锁  :生产消费模式(Java中等待唤醒机制)
  
  3) 线程安全 --->同步的---->执行效率低
  举例:
  银行的网站,医疗平台...
 
  4)线程不安全---->不同步---->执行效率高
  举例:
  新闻网站,XXX论坛...
  
  5)  StringBuffer和String的区别?
    前者是一个可变的字符序列,后者是不可变的字符序列
    如果从内存角度考虑,String定义的时候,会在常量池中开辟空间,比较耗费内存
    而StringBuffer,字符串缓冲区(里面存储的全部都是字符串),它会释放掉
    
  6)StringBuffer的构造方法:
  StringBuffer() :无参构造的形式,初始容量16
 StringBuffer(int capacity) :指定容量构造一个字符串缓冲区
 StringBuffer(String str) 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容
  例如:
StringBuffer s = new StringBuffer("helloworld");
System.out.println(s.length());输出结果为10
System.out.println(s.capacity());输出结果为:26
}
 
   7) StringBuffer的获取功能:
  public int length()返回长度
  public int capacity()返回当前容量 (如果超过容量,系统自动分配(存储字符串的时候,英文的))
2、StringBuffer的添加功能

public StringBuffer append(String/boolean....) :在字符串缓冲区中追加数据(在末尾追加),并且返回字符串缓冲区本身
例如:
StringBuffer s1 = new StringBuffer(“hello”);
System.out.print(s1.append("world"));
输出结果为:helloworld
 
public StringBuffer insert(int offset,String str):将当前str字符串添加到指定位置处,它返回字符串缓冲区本身
System.out.println(s1.insert(1,"ll"));
输出结果为:hllello
  3、SringBuffer的删除功能
1)public StringBuffer deleteCharAt(int index):移除指定位置处的字符..
StringBuffer S2 = new S2(Javase);
System.out.println(S2.deleatCharAt(4));
输出结果为:Javae
2)public StringBuffer delete(int start,int end):移除从指定位置处到end-1处的子字符串...
System.out.println(S2.delete(3,5));
输出结果为:Jav
4、StringBuffer的反转功能
public StringBuffer reverse() :将缓冲区中的字符序列反转取代,返回它(字符串冲)本身
例如:
StringBuffer S3 = new StringBuffer("he");
System.out.println(S3.reverse());
输出结果为:eh
5、StringBuffer的截取功能
1)public String substring(int start):从指定位置开始截取,默认截取到末尾,返回值不在是缓冲区本身,而是一个新的字符串
StringBuffer s4 = new StringBuffer("loveapple");
System.out.println(s4.substring(4));
输出结果为:apple
2)public String substring(int start,int end) :从指定位置开始到指定位置结束截取,包前不包后,返回值不在是缓冲区本身,而是一个新的字符串
System.out.println(s4.substring(4,8));
输出结果为:appl
6、StringBuffer的替换功能
public StringBuffer replace(int start,int end,String str) 
  从指定位置到指定位置结束,用新的str字符串去替换,返回值是字符串缓冲区本身
System.out.println(s4.replace(4,9,"food"));
输出结果为;lovefood
7、String 和StringBuffer之间的相互转换
例如:
String sc = "happy";
第一种:
StringBuffer sd = new StringBuffer(sc);
Systen.out.println(sd);
输出结果为:happy 
第二种:
StringBuffer sf = new StringBuffer();
sf.append(sc);
System.out.println(sf);

输出结果为:happy

    8、StringBuffer和StringBulder的区别

 1)StringBuffer       

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

修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可

以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此

任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线

程进行的方法调用顺序一致

2)StringBulder

        

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同

步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线

程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数

实现中,它比 StringBuffer 要快。 

 

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值