-
StringBuffer JDK1.0版本提供的类,线程安全,做线程同步检查, 效率较低。
-
StringBuilder JDK1.5版本提供的类,线程不安全,不做线程同步检查,因此效率较高。 建议采用该类。
常用方法列表:
- 重载的public StringBuilder append(…)方法
可以为该StringBuilder 对象添加字符序列,仍然返回自身对象。
- 方法 public StringBuilder delete(int start,int end)
可以删除从start开始到end-1为止的一段字符序列,仍然返回自身对象。
- 方法 public StringBuilder deleteCharAt(int index)
移除此序列指定位置上的 char,仍然返回自身对象。
- 重载的public StringBuilder insert(…)方法
可以为该StringBuilder 对象在指定位置插入字符序列,仍然返回自身对象。
- 方法 public StringBuilder reverse()
用于将字符序列逆序,仍然返回自身对象。
-
方法 public String toString() 返回此序列中数据的字符串表示形式。
-
和 String 类含义类似的方法:
public int indexOf(String str)
public int indexOf(String str,int fromIndex)
public String substring(int start)
public String substring(int start,int end)
public int length()
char charAt(int index)
追加单个字符
StringBuilder ssb = new StringBuilder();
for(int i = 0; i<26; i++) {
char tmp = (char)('A'+i);
ssb.append(tmp); //追加单个字符
}
toString方法是为了方便所有类的字符串操作打印效果是没
System.out.println(ssb); System.out.println(ssb.toString);打印效果是没有区别的
通过索引修改字符
ssb.setCharAt(0, 'z'); //通过索引修改字符
插入字符串
System.out.println(ssb);
ssb.insert(0, 'A').insert(1, 'l').insert(2, 'p').
insert(3, 'h').insert(4, 'a').insert(5, 'b').
insert(6, 'e').insert(7, 't').insert(8, ':'); //插入字符串
如上图源码,由于insert函数返回的this,所以可以链式调用
通过索引删除某个字符
ssb.deleteCharAt(0).deleteCharAt(0); //通过索引删除某个字符
如上图源码,deleteCharAt函数返回的this,可以链式调用与insert类似
通过索引删除某个字符区间[)
ssb.delete(0, 7); //[start, end)
start和end两个下标,左闭右开
如上图源码,delete函数返回的this,可以链式调用与deleteCharAt和insert类似
以上是对下面StringBuilder部分的分析,StringBuffer大体上差不多
package yzy.commonclasses;
/*
* 测试StringBuilder,StringBuffer可变字符序列常用方法
*/
public class testStringBuilder2 {
public static void main(String[] args) {
String str = new String("helle");
System.out.println(str);
System.out.println(str.toString()); //toString方法是为了方便所有类的字符串操作打印效果是没有区别的
StringBuilder ssb = new StringBuilder();
for(int i = 0; i<26; i++) {
char tmp = (char)('A'+i);
ssb.append(tmp); //追加单个字符
}
System.out.println(ssb); //System.out.println(ssb.toString);打印效果是没有区别的
ssb.reverse();
System.out.println(ssb);
ssb.setCharAt(0, 'z'); //通过索引修改字符
System.out.println(ssb);
ssb.insert(0, 'A').insert(1, 'l').insert(2, 'p').
insert(3, 'h').insert(4, 'a').insert(5, 'b').
insert(6, 'e').insert(7, 't').insert(8, ':'); //插入字符串
System.out.println(ssb);
ssb.deleteCharAt(0).deleteCharAt(0); //通过索引删除某个字符串
System.out.println(ssb);
ssb.delete(0, 7); //通过索引删除某个字符区间[)
System.out.println(ssb);
//StringBuffer与StringBuilder常用方法几乎差不多
StringBuffer ssb1 = new StringBuffer();
for(int i = 0; i<26; i++) {
char tmp = (char)('A'+i);
ssb1.append(tmp); //追加单个字符
}
System.out.println(ssb1);
ssb1.reverse();
System.out.println(ssb1);
ssb1.setCharAt(0, 'z');
System.out.println(ssb);
ssb1.insert(0, 'A').insert(1, 'l').insert(2, 'p').
insert(3, 'h').insert(4, 'a').insert(5, 'b').
insert(6, 'e').insert(7, 't').insert(8, ':'); //插入字符串
System.out.println(ssb1);
ssb1.deleteCharAt(0).deleteCharAt(0); //获取某个字符
System.out.println(ssb1);
ssb1.delete(0, 7); //[)
System.out.println(ssb1);
}
}