关闭页面特效

StringBuffer&StringBuilder

1|0StringBuffer&StringBuilder


1|1StringBuffer


可变的字符序列;线程安全 ,效率低;(JDK8之前的底层使用char[],之后使用byte[]数组)

1|2StringBuilder


可变的字符序列;线程不安全 ,效率高;

1|3源码解析


StringBuilderStringBuffer继承了abstractStringBuilder 针对于StringBuilder来说 内部属性: char[] value;//存储字符序列 int count;//实际存储字符的个数 StringBuilder sBuffer1 = new StringBuilder();//char[] value = new char[16]; StringBuilder sBuffer1 = new StringBuilder("abc");//char[] value = new char[16+"abc".length]; sBuffer1.append("ac");//value[0]='a';value[1]='c'; sBuffer1.append("b");//value[2]='b'; 不断的添加,一旦count要超过 value.length时,就需要扩容;默认扩容为原有容量的2倍+2 Arrays.copyOf()将原有value数组中的元素复制到新的数组中。

1|4使用方法


  • 如果开发中需要频繁的针对字符串进行增,删,改操作,建议使用StringBuffer或者StringBuilder替换String因为使用String效率低。
  • 如果开发中,不涉及到线程安全问题,建议使用StringBuilder替代StringBuffer;
  • 如果开发中大体确定要操作的字符的个数,建议使用带int capacity参数的构造器。因为可以避免底层扩容操作,性能更高。

1|5StringBuffer和StringBuilder常用方法


增: StringBuffer append(xx) 删: StringBuffer delete(int start,int end) [start,end) StringBuffer deleteCharAt(int index) 改: StringBuffer replace(int start,int end,String str) void setCharAt(int index,char c) 查: char charAt(int index) 插: StringBuffer insert(int index,xx) 长度: int length() 反转: StringBuffer reverse() 设置底层数组长度: setLength(int length) new StringBuffer(int length)

1|6对比三者的执行效率


StringBuilder > StringBuffer > String


__EOF__

作  者YXH
出  处https://www.cnblogs.com/YxinHaaa/p/17366494.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!

posted @   YxinHaaa  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
0
0
关注
跳至底部
点击右上角即可分享
微信分享提示