StringBuffer和StringBuilder

一、关于StringBuffer和StringBuilder的使用:

1.对比分析:

  • String:不可变的字符序列(这三个底层都是char【】存储)
  • StringBuffer:可变的字符序列;线程安全,效率低
  • StringBuilder:可变的字符序列;jdk5.0新增,线程不安全,效率高

关于StringBuffer和StringBuilder,他们代码底层是一样的,就是多一个synchronize

查看源码可以得知一些重要消息:

1.当时用空参的创建字符串时:

StringBuffer str1 = new StringBuffer();//底层穿件了一个长度为16的char【】数组

2.当使用带参的创建字符串时:

StringBuffer sb = new StringBuffer(“abc”);//相当于穿件了一个字符串+16长度的char【】数组

3.当16长度不够了怎么办?扩容!

默认情况下,扩容是原理容量*2+2,同时将原有数组中的元素赋值到新的数组中。如果长度太大,那么会直接赋值要添加的数组长度给容量。

因此:开发中建议使用StringBuffer(int capacity)指定数组的长度,在知晓大概的长度的情况下。

二、StringBuffer的常用方法:

  • StringBuffer append(xxx):提供了很多的append()方法,用于进行字符串拼接
  • StringBuffer delete(int start,int end):删除指定位置的内容
  • StringBuffer replace(int start, int end, String str):把[start,end)位置替换为str
  • StringBuffer insert(int offset, xxx):在指定位置插入xxx
  • StringBuffer reverse() :把当前字符序列逆转
原文地址:https://www.cnblogs.com/liuhuan425/p/10848016.html