Java高级 --- StringBuffer、StringBuilder类

StringBuffer、StringBuilder

在这里插入图片描述

  • String、StringBuffer、StringBuilder异同?
    • String:不可变的字符序列;底层使用char【】存储
    • StringBuffer:可变的字符序列;线程安全的,效率低;底层使用char【】存储
    • StringBuilder:可变的字符序列;线程不安全,效率高;底层使用char【】存储


1. 源码分析

  • StringBuffer sb1=new StringBuffer(); 	//底层创建了一个长度为16的数组 char[] value=new char(16);
    sb1.append('a');   //value【0】='a';
    sb1.append('b');   //value【1】='b';
    
    StringBuffer sb2=new StringBuffer("abc");   //char[] value=new char[abc.length()+16];
    
  • System.out.println(sb2.length()) ----------------> 是3,length是返回的count,不用想那么多

  • 扩容问题:如果要添加的数据底层数组盛不下了,那就需要扩容底层数组:

    • 默认情况下扩容为原来容量的2倍+2,同时将原有数组中的元素copy给新数组中
    • 开发过程中,建议大家使用:StringBuffer(int capacity) 或者StringBuilder(int capacity)
  • 效率对比:

    从高到低排列:StringBuilder > StringBuffer > String




2. StringBuffer常用方法

在这里插入图片描述

注意:

replace()方法是把【start,end)位置替换,左闭右开

substring方法是返回一个从start开始到end结束的左闭右开区间的子字符串

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值