String
String 值不可變,每次對String操作會生成新的String對象,浪費內(nèi)存空間。
StringBuffer
StringBuffer在對對象進行字符操作時,直接在原有對象上進行修改,不會生成新的對象,可提高效率,節(jié)約內(nèi)存空間。
StringBuffer相關(guān)常用方法小結(jié):
1.append()
在字符串末尾追加內(nèi)容
StringBuffer sb=new StringBuffer("Hello");
System.out.println(sb);
sb.append(" world!");
System.out.println(sb);
結(jié)果顯示:
Hello
Hello world!
2.deleteCharAt()
刪除指定位置的字符
StringBuffer sb=new StringBuffer("abcdef");
System.out.println(sb);
sb.deleteCharAt(2); //2為字符下標
System.out.println(sb);
結(jié)果顯示:
abcdef
abdef
3.delete()
此方法一次性刪除多個字符
StringBuffer sb=new StringBuffer("abcdef");
System.out.println(sb);
sb.delete(2,5); //2為起始位置,5為終止位置
System.out.println(sb);
結(jié)果顯示:
abcdef
abf
**4.insert() **
在指定位置插入字符串
StringBuffer sb=new StringBuffer("abcdef");
System.out.println(sb);
sb.insert(1,"123"); //在1位置開始插入
System.out.println(sb);
結(jié)果顯示:
abcdef
a123bcdef
5.setCharAt() 方法
修改指定位置的字符
StringBuffer sb=new StringBuffer("abcdef");
System.out.println(sb);
sb.setCharAt(1,'5'); //將位置1的字符b替換為5
System.out.println(sb);
結(jié)果顯示:
abcdef
a5cdef
StringBuilder
StringBuilder類和StringBuffer類功能基本相似,方法也差不多,主要區(qū)別在于StringBuffer類的方法是多線程安全的,而StringBuilder不是線程安全的,相比而言,StringBuilder類會略微快一點。
StringBuffer:線程安全
StringBuilder:線程不安全
使用環(huán)境
- 操作少量的數(shù)據(jù)使用 String;
- 單線程操作大量數(shù)據(jù)使用 StringBuilder;
- 多線程操作大量數(shù)據(jù)使用 StringBuffer。