StringBuffer是使用缓冲区的,本身也是操作字符串的,但与String类不同,String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改变的。
对于StringBuffer而言本身就是一个操作类,不能像String那样直接通过赋值的方式完成对象实例化,必须通过构造方法的方式完成。
1 public class TestStringBuffer { 2 public static void main(String args[]){ 3 StringBuffer str1 = new StringBuffer("hello"); 4 String str2 = "hello"; 5 add(str1); 6 add(str2); 7 System.out.println(str1); 8 System.out.println(str2); 9 } 10 public static void add(String str){ 11 str += " world"; 12 } 13 public static void add(StringBuffer str){ 14 str.append(" world"); 15 } 16 }
可以看到StringBuffer对象可以修改内容,而String对象就不能改变其内容了。
所以StringBuffer类在字符串需要经常改变时使用。