不需要过场,就开门见山吧。
String
String是不可变的(immutable),一旦String对象被创建,它的值就不会改变。
直接上代码
public class main {
/**
* @param args
*/
public static void main(String[] args) {
String a = "hello"; //对象a初始化
String b = a; //将a赋值给b
System.out.println("a = " + a);
System.out.println("b = " + b);
a = "world"; //改变a的值
System.out.println("a = " + a);
System.out.println("b = " + b);
}
}
输出:
a = hello
b = hello
a = world
b = hello
可见给对象a的赋值,是重新new出来一个对象。不可变的字符串具有一个优势就是编译器可以把这些字符串设为共享的。缺点是在需要频繁进行String "+" 操作时,会new出很多String对象,这会影响性能。这时候就需要使用StringBuffer。
StringBuffer
StringBuffer是可变的。上代码,上真相。public class main {
/**
* @param args
*/
public static void main(String[] args) {
StringBuffer buffer1 = new StringBuffer();
buffer1.append("hello");
StringBuffer buffer2 = buffer1;
System.out.println("buffer1 = " + buffer1);
System.out.println("buffer2 = " + buffer2);
buffer1.append("world");
System.out.println("buffer1 = " + buffer1);
System.out.println("buffer2 = " + buffer2);
}
}
输出:
buffer1 = hello
buffer2 = hello
buffer1 = helloworld
buffer2 = helloworld