append方法的原理

本文详细讲解了StringBuilder的append()方法如何通过动态扩容实现字符串拼接,强调了其在循环中的高效性和与String的区别。介绍了StringBuilder底层使用char数组存储,以及内存分配和复制的过程。
摘要由CSDN通过智能技术生成

StringBuilder 中append()方法的原理

1.简介
append()方法是用来拼接字符串的,在循环语句中使用可提高代码效率[1]

2.用法

//用法一
StringBuilder a = new StringBuilder();
a.append("abc").append("efg");
String s = a.toString();

//用法二
String s = (new StringBuilder()).append("abc").toString();

3.原理
动态数据组,StringBuilder底层是用char数组来存储数据的。
append()方法把字符拼接在原字符串的最后边,方法可通过size或者length来记录这个位置。当数组长度不够时,会再申请一个新地址,刚申请下来的地址是空的,原地址中的数据会被复制过来,数据位置不会发生任何改变,完成复制后,指针指向新地址,原地址被释放。新地址中字符仍被拼接在最后边。

StringBuilder状态长度
初始16
扩容当前长度×2+2

4.其他

  • 堆空间内存地址不一定连续,所以不能实现两个内存空间的拼接
  • StringBuilder会在需要的时候申请地址空间,不使用了就会释放
  • StringBuilder拼接比String拼接高效:String builder把拼接内容放在原数组中,String会开辟一块新空间来存放拼接后的数据
  • 扩容长度代码在append()方法中,>>1表示左移1位,即×2。

参考文章:
[1].https://blog.csdn.net/qq_40488936/article/details/104921939

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值