三者都是处理字符串的方案,不过StringBuilder和StringBuffer可以添加、插入和追加新的内容,而String对象一旦创建,它的值也就确定了。

StringBuffer和StringBuilder相比,除了StringBuffer中修改缓冲区的方法是同步的之外其他基本相似,在程序中一般都可以用StringBuffer代替StringBuilder。

StringBuffer适用于多任务并发访问,StringBuilder适用于单任务访问。下面分别对两者进行介绍:

(1)StringBuilder方法示例代码(StringBuffer的方法也是如此)

import java.util.*; 



 public class testStringBuilder { 

public static void main(String[]args) 

{ 

test(); 

} 

 

public static void test() 

{ 

StringBuilder s1=new StringBuilder("Welcome to the world!");//构建带指定字符串的字符串生成器 

StringBuilder t1;//构建一个容量为16 的空的字符串生成器 

StringBuilder t2=new StringBuilder(10);//构建一个容量为10的字符串生成器 

t2.append("123456789abcdefgh");//追加字符串,其实还可以追加其他数据类型(boolean、char、char数组、double、float、int、String)的值 

System.out.println(t2); 

t2.delete(1, 8);//删除从下标1到8-1=7处的字符 

System.out.println(t2); 

t2.deleteCharAt(0);//删除指定下标0处的字符 

System.out.println(t2); 

t2.insert(4, "mnopq");//将字符串mnopq插入这个生成器的位置偏移量4处,原来字符串内容只增不减 

System.out.println(t2); 

t2.replace(1, 4, "1234");//将原来字符串中从下标1到4-1=3处的字符替换为字符串1234 

System.out.println(t2); 

System.out.println(t2.reverse());//颠倒生成器中的字符 

t2.setCharAt(0, '0');//在生成器的特定下标0处设置一个新字符替换该下标处原来的字符 

System.out.println(t2); 

 

t1=t2.reverse();//!!注意:此时t1和t2指向同一个StringBuff对象,也就是说t2更改时t1的内容也相应改变 

System.out.println(t1); 

t2.append("haha"); 

System.out.println(t1);//t1的内容已经改变 

System.out.println(t2.capacity()); 

System.out.println(t1.length()); 

t1.setLength(10);//改变字符个数,容量不变 

System.out.println(t2.capacity()); 

System.out.println(t1); 

System.out.println(t1.substring(1));//返回从下标1开始的子串 

 

t1.trimToSize();//减少字符串生成器使用的存储大小,使得容量和字符个数相等,即capacity()==length(),节省内存空间 

System.out.println(t1); 

System.out.println(t1.capacity()); 

System.out.println(t1.length()); 

} 

 }

程序运行结果如下:

123456789abcdefgh
19abcdefgh
9abcdefgh
9abcmnopqdefgh
91234mnopqdefgh
hgfedqponm43219
0gfedqponm43219
91234mnopqdefg0
91234mnopqdefg0haha
22
19
22
91234mnopq
1234mnopq
91234mnopq
10
10


toString():从生成器中返回一个字符串对象

capacity():返回此时生成器中的容量,注意:不是字符个数

length():返回生成器中的字符个数

charAt(index:int):返回指定下标处的字符

setLength(length:int):设置这个生成器的字符个数,会改变length()和字符串长度

substring(startIndex:int):返回从下标stratIndex开始的子串

substring(stratIndex:int,endIndex:int):返回从stratIndex到endIndex-1处的子串

trimToSize()://减少字符串生成器所使用的存储大小