Java中StringBuilder和StringBuffer类
当对字符串进行修改的时候,需要使用StringBuilder和StringBuffer。
StringBuilder和StringBuffer之间的不同点:
1.StringBuilder的方法是线程不安全的(不能同步访问),
StringBuffer是线程安全的(同步访问);
2.StringBuilder由于线程不安全,比StringBuffer 有速度优势。
String和StringBuilder以及StringBuffer的关系图:
一、StringBuilder和StringBuffer的构造函数:
1.StringBuilder()
构造空的StringBuilder字符串,初始容量为 16 个字符。
StringBuilder builder = new StringBuilder();
2.StringBuilder(Char c)
构造Char 类型的StringBuilder字符串。
StringBuilder builder = new StringBuilder('a');
3.StringBuilder(int i)
构造初始容量为i的StringBuilder字符串。
StringBuilder builder = new StringBuilder(10);
4.StringBuilder(String str)
构造带字符串str的StringBuilder字符串。
StringBuilder builder = new StringBuilder("abc");
二、StringBuilder和StringBuffer主要方法:
1.append(type s)
将type类型的s追加到序列(type可以是8种基本数据类型和String,Object形式)。
StringBuilder builder = new StringBuilder("abc");
builder.append("de");
System.out.println(builder);
输出结果:abcde
2.reverse()
将序列倒序。
StringBuilder str = new StringBuilder("abc");
System.out.println(str.reverse());
输出结果:cba
3.delete(int start, int end)
移除序列中指定的的字符,指定开始位置和结束位置(大于等于start,小于end)。
StringBuilder str = new StringBuilder("abcdefg");
str.delete(4, 9);
System.out.println(str);
输出结果:abcfg
4.insert(int s, type i)
在序列中s处,将type类型的字符串插入序列中(type可以是8种基本数据类型和String,Object形式)。
StringBuilder str = new StringBuilder("abcdefg");
str.insert(2, 34);
System.out.println(str.toString());
输出结果:ab34cdefg
5.replace(int start, int end, String str)
用给定的str替换序列中指定的字符,指定开始位置和结束位置(大于等于start,小于end)。
StringBuilder str = new StringBuilder("abcdefg");
str.replace(2,5,"java");
System.out.println(str);
输出结果:abjavafg
6.int capacity()
返回长度。
StringBuilder str = new StringBuilder("abc");
System.out.println(str.capacity());
输出结果:19(默认长度加上所赋值的长度)
7.ensureCapacity(int mix)
设定字符串的容量至少等于mix。
8.getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从序列复制到目标字符数组dst。
被复制的第一个字符是srcBegin处;被复制的最后一个字符是srcEnd - 1处,字符复制到dst数组,在dst数组dstBegin处开始粘贴。
StringBuilder str = new StringBuilder("java programming");
char[] cArr = new char[]{'t','u','t','o','r','i','a','l','s'};
str.getChars(5, 10, cArr, 3);
System.out.println(cArr);
输出结果:tutprogrs
9.setCharAt(int index, char c)
将index处的字符设置为c。
10.setLength(int i)
设置字符序列的长度为i。
11.subSequence(int start, int end)
截取字符串,指定开始位置和结束位置(大于等于start,小于end)。
StringBuilder str = new StringBuilder("administrator");
cSeq = str.subSequence(0,5);
System.out.println(cSeq);
输出结果:admin
三、StringBuilder和StringBuffer的其他方法(和上一篇中String方法一致):
1.char charAt(int index)
2.int indexOf(String str)
3.int indexOf(String str, int fromIndex)
4.int lastIndexOf(String str)
5.int lastIndexOf(String str, int fromIndex)
6.int length()
7.substring(int start)
8.substring(int start, int end)
9.toString()