StringBuffer 对象则代表一个字符序列可变的字符串。当一个 StringBuffer 被创建以后,通过StringBuffer 提供的一系列方法可以改变这个字符串对象的字符序列,一旦通过StringBuffer 生成了最终想要的字符串,就可以调用它的toString 方法将其转换成一个String 对象。
JDK 1.5以后又新增了 StringBuilder 类。StringBuilder 类和 StringBuffer 类基本相似。不同的是,StringBuffer 是线程安全的, 而StringBuilder 则没有实现线程安全功能。所以性能略高。所以在不用考虑线程安全的情况下使用 StringBuilder 类。
一.StringBuffer 类:
常用的方法:
1、添加:
StringBuffer append(数据) ; 将指定的数据作为参数添加到已有的数据结尾处。返回的还是原缓冲区对象。
StringBuffer insert(int index , 数据) ; 可以将数据插入到指定角标index 位置。注意:index不能越界。
2、删除:
StringBuffer delete(int start , int end) ;删除缓冲区的数据,包含start,不包含end。
StringBuffer deleteCharAt(int index) ; 删除指定位置的字符。
3、获取:
char charAt(int index) ; 获取指定位置的字符。
String substring(int start) 返回一个新的 String,它包含此字符序列当前所包含的字符子序列
... ...
int indexOf(String str) ; 获取子串第一次出现的位置。
... ...
注意:获取方法和String 类中的方法类似。
4、修改 :
StringBuffer replace(int start , int end , String str)
使用给定String 中字符代替此序列中的子串中的字符。
void setChatAt(int index , char ch) 将给定索引出的字符设置成ch .
StringBuffer reverse() 将次字符序列用其反转形式取代。
1 public class StringBufferDemo 2 { 3 public static void main(String[] args) 4 { 5 System.out.println("-------------------------------"); 6 CreateString(new StringBuffer("hello java")) ; 7 System.out.println("-------------------------------"); 8 DeleteString(new StringBuffer("hello java")) ; 9 System.out.println("-------------------------------"); 10 ReplaceString(new StringBuffer("hello java")) ; 11 } 12 public static void CreateString(StringBuffer stringBuffer ) 13 { 14 // 添加数据到stringBuffer 结尾处, 15 stringBuffer.append("hello").append("java").append(520).append(true) ; 16 System.out.println(stringBuffer); 17 // 在指定位置添加数据。 18 stringBuffer.insert(0, "heima,"); 19 System.out.println(stringBuffer); 20 } 21 public static void DeleteString(StringBuffer stringBuffer) 22 { 23 // 删除start至end的字符序列。 24 stringBuffer.delete(0,6); 25 System.out.println(stringBuffer); 26 // 删除指定位置的字符 27 stringBuffer.deleteCharAt(1) ; 28 System.out.println(stringBuffer); 29 } 30 public static void ReplaceString(StringBuffer stringBuffer) 31 { 32 // 替换指定字符序列。 33 stringBuffer.replace(6, stringBuffer.length(), "wrold") ; 34 System.out.println(stringBuffer); 35 stringBuffer.setCharAt(5, ',') ; 36 System.out.println(stringBuffer); 37 // 反转 38 stringBuffer.reverse(); 39 System.out.println(stringBuffer); 40 } 41 }
二.StirngBuilder 类
一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。