StringBuilder详解

还是一样,我们学习StringBuilder 之前先查一下一些定义,先做个简单的了解
在这里插入图片描述

首先就是创建Stringbuilder对象

StringBuilder sbuilder =new StringBuilder();

我们来做个简单的对比:连接字符串

StringBuilder

StringBuilder sbuilder=new StringBuilder();
sbuilder.append("abc");
sbuilder.append("def");
string str=sb.ToString();

String

string s1=“abc”;
string s2=“def”;
string str=s1+s2;

得到的结果相同,但在处理字符串比较多的的时候使用String效率会变低,而StringBuilder会更加适合,那么我们还是十分有必要去了解StringBuider的


大家想一下,String的连接方式我们知道了,上面也演示了StringBuilder的连接方式,好像和StringBuffer一样哦,对的确实是。
上面的StringBuilder对应的是StringBuilder的append(String str)/append(Char c)字符串连接方法

StringBuilder  a=new StringBuilder("abc");
a.append('a');
a.append("aaaa");
System.out.println(a);

结果:abcaaaaa


那么我现在需要把得到的StringBuilder缓冲到Sting字符串中,那么我们就可以用到StringBuilder给我们提供的一个方法

toString():返回一个与构建起或缓冲器内容相同的字符串

StringBuilder  a=new StringBuilder("abc");
a.append('a');
a.append("aaaa");
//我们的的结果是abcaaaaa
//我们现在给它进行一个缓冲
String as=a.toString();
System.out.println(a);

结果:abcaaaaa


不知道大家有没有看过庞博的吐槽,我明明是个卖肉夹馍的,你来跟我要一条狗,在这里我想说难不倒我
在这里插入图片描述

因为StringBuilder给我们提供了appendcodePoint(int cp):追加一个代码点,并将其转换为一个或两个代码单元并返回this

大家都知道char和int的对应关系,不知道的可以上网查一下哈

 StringBuilder s = new StringBuilder("aaaaaa");
 s.appendCodePoint(105);
 System.out.println(s);

显示结果:aaaaaai
这里大家都打个问好?why?因为我们int(105)对应的char字符集是小写的i,所以appendCodePoint方法把105的字符集i添加到StringBuilder的尾部,返回的就是aaaaaai


那么有一个字符串aaabaaaaa,其中一个b好像不太合适,想把它换成a,额…,好像也可以哦

StringBuilder有个我们提供了一个方法setCharAt(int i, char c):我们可以把这个方法理解为替换,就是把指定位置的字符替换成自己想要的字符
上代码:

 StringBuilder s = new StringBuilder("aaabaaaaa");
 s.setCharAt(3,'a');
 System.out.println(s);

显示结果:aaaaaaaaa
在这里插入图片描述


产品经理:这么叼,那你把那个b给我插回去
我:
在这里插入图片描述

不要担心,在这里插入图片描述

StringBuilder的另一个方法派上用场了:
insert(int offset, String str)/insert(int offset, Char c):指定位置之前插入字符或者字符串,哈哈

上代码:

 StringBuilder s = new StringBuilder("aaabaaaaa");
 s.setCharAt(3,'a');
 s.insert(3,'b');
 System.out.println(s);

结果:aaabaaaaaa


经理:这里有个字符串,aaabcaaa,bc把它删了,多不美观
我:
在这里插入图片描述

这里调用下delete(int startIndex,int endIndex):注意第一个位置开始,第二个是结束,第一个参数包括开始的字符,第二个参数不包含哈

上代码:

 StringBuilder s = new StringBuilder("aaabcaaa");
 s.delete(3,5);
 System.out.println(s);

结果:aaaaaa


String,StringBuilder对比

  • string本身是不可改变的,它只能赋值一次,每一次改变,都会生成新的对象,然后原有的对象引用新的对象,而每一次生成新对象都会对系统性能产生影响。
  • StringBuilder是可以改变的,每次操作都是对自身对象进行操作,而不是生成新的对象,其所占空间会随着内容的增加而扩充,这样,在做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。StringBuilder的执行效率也是比较高。

原创文章,梳理不足的地方,评论区评论一起解决

  • 13
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值