string和StringBuilder

来源:互联网 发布:java swing教程 编辑:程序博客网 时间:2024/04/29 21:00

在之前我们简单的介绍了string字符串的一些操作方法,有一点要知道的是,当我们修改string字符串时,实质上我们是在堆内存里,重新开辟了一个内存空间,将修改完的字符串放进去,再引用到这块内存,旧的内存空间则被GC回收。

如果我们需要频繁地修改字符串,那这种重复开辟内存的方法就会影响效率,所以我们有个StringBuilder类,也能够创建一个字符串,但是用法和string不同

StringBuilder类
StringBuilder创建的字符串其实是一个对象,通过一个字符串赋值给这个对象。
创建StringBuilder的三种方法:

  1. StringBuilder sb = new StringBuilder("www.baidu.com"); //利用构造函数创建一个对象
  2. StringBuilder sb = new StringBuilder(20); //初始化一个空的StringBuilder对象,并且占有20个字符的大小
  3. StringBuilder sb = new StringBuilder("www.baidu.com",100); //初始化了一个为"www.baidu.com"的字符串并且有100个字符的空间

StringBuilder的性质和我们之前所说的列表有一些相同的地方:当我们给StringBuilder的对象申请了50个字符空间,如果当传入的字符串超出了这个范围,它会申请一个新的内存空间,容量为原来的两倍,旧字符串会被回收。

StringBuilder和string的区别
这两种类型都能够修改字符串,但是string修改字符串时,是申请新的内存空间然后修改引用,回收旧内存。而StringBuilder修改字符串是直接修改堆内存里的字符串,不修改引用,除非字符串的长度超出了容量。
这里写图片描述
左图:string修改字符串过程
有图:StringBuilder修改字符串过程


和string一样,StringBuilder也有其他操作字符串的方法

  1. 增添字符串 sb.Append(“xxx”);
  2. 插入字符串或字符 sb.Insert(0,”http://”);
  3. 移除指定长度的字符串 sb.Remove(0,4);
  4. 替换字符串或字符 sb.Replace(“.”,”,”);

这些只是一些常用的方法,如果想去了解其他操作的方法,我们可以在VS中,在StringBuilder类上按F12,查看这个类里的方法。

原创粉丝点击