运行速度:
StringBuilder > StringBuffer > String
StringBuffer:final修饰的类。
默认构造器是由系统自动分配容量,默认是16个字符。由于没有赋值,所以缓冲对象的长度就是0。
StringBuffer sbf=new StringBuffer(100);设定容量大小的构造器
StringBuffer append(Tpye c) | 这些方法都是向字符串缓冲区“追加”元素,但是,这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度,Java将自动进行扩充。 |
int capacity() | 返回当前StringBuffer对象(字符串缓冲区)的总空间,而非字符号串的长度。 |
char charAt(int index) | 在当前StringBuffer对象中取索引号为index的字符。第一个字符的索引为0。 |
StringBuffer delete(int start, int end) | 删除当前StringBuffer对象中以索引号start开始,到end结束的子串。 |
StringBuffer deleteCharAt(int index) | 删除当前StringBuffer对象中索引号为index的字符。 |
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 从当前StringBuffer对象的索引号srcBegin开始,到srcEnd结束的子串,赋值到字符数组dst中,并且从dst的索引号dstBegin开始。 |
int indexOf(String str) | 返回当前StringBuffer对象中,第一个满足str子串的位置。 |
int indexOf(String str, int fromIndex) | 从当前StringBuffer对象的fromIndex开始查找,返回第一个满足str子串的位置。 |
StringBuffer insert(int offset, type c) | 这些方法都是在当前StringBuffer对象中插入一个元素,在索引号offset处插入相应的值。 |
int lastIndexOf(String str) | 返回当前StringBuffer对象中,最后一个满足str子串的位置。 |
int lastIndexOf(String str, int fromIndex) | 从当前StringBuffer对象的fromIndex开始查找,返回最后一个满足str子串的位置。 |
int length() | 返回当前StringBuffer对象(字符缓冲区)中,字符串的长度。注意:此方法与capacity() 不同。 |
StringBuffer replace(int start, int end, String str) | 替换当前StringBuffer对象的字符串。从start开始,到end结束的位置替换成str。 |
StringBuffer reverse() | 将字符串翻转。 |
void setCharAt(int index, char ch) | 设置索引号index的字符为ch。 |
void setLength(int newLength) | 重新设置字符串缓冲区中字符串的长度,如果newLength小于当前的字符串长度,将截去多余的字符。 |
String substring(int start) | 取当前StringBuffer对象中,从start开始到结尾的子串。 |
String substring(int start, int end) | 取当前StringBuffer对象中,从start开始到end的子串。 |
String toString() | 将当前StringBuffer对象转换成String对象 |
StringBuilder:final修饰的类。
如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。 在 StringBuilder 上的主要操作是 append 和 insert 方法。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符添加或插入到字符串生成器中。append 方法始终将这些字符添加到生成器的末端;而 insert 方法则在指定的点添加字符。 例如,如果 z 引用一个当前内容为“start”的字符串生成器对象,则该方法调用 z.append("le") 将使字符串生成器包含“startle”,而 z.insert(4, "le") 将更改字符串生成器,使之包含“starlet”。 通常,如果 n引用 StringBuilder 的实例(StringBuilder n = new StringBuilder();),则 n.append(x) 和 n.insert(n.length(), x) 具有相同的效果。 每个字符串生成器都有一定的容量。只要字符串生成器所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区。如果内部缓冲区溢出,则此容量自动增大。 将StringBuilder的实例用于多个线程是不安全的。如果需要这样的同步,则建议使用StringBuffer。 [1] StringBuilder类可以用于在无需创建一个新的字符串对象情况下修改字符串。StringBuilder不是线程安全的,而StringBuffer是线程安全的。但StringBuilder在单线程中的性能比StringBuffer高。
String:final修饰的类。
length() | 字符串的长度 |
charAt() | 截取一个字符 |
getchars() | 截取多个字符并由其他字符串接收 |
getBytes() | 将字符串变成一个byte数组 |
toCharArray() | 将字符串变成一个字符数组 |
equals()和equalsIgnoreCase() | 比较两个字符串是否相等,前者区分大小写,后者不区分 |
startsWith()和endsWith() | 判断字符串是不是以特定的字符开头或结束。 |
toUpperCase()和toLowerCase() | 将字符串转换为大写或小写 |
concat() | 连接两个字符串 |
trim() | 去掉起始和结束的空格 |
substring() | 截取字符串 |
indexOf()和lastIndexOf() | 前者是查找字符或字符串第一次出现的地方,后者是查找字符或字符串最后一次出现的地方 |
compareTo()和compareToIgnoreCase() | 按字典顺序比较两个字符串的大小,前者区分大小写,后者不区分 |
replace(String oldStr,String newStr) | 替换 |
replaceAll(String regex,String replacement) | 使用正则表达式进行替换 |