String是不可变类,StringBuffer是可变类。
不可变类:
当创建了这个类的实例后,就不允许再修改它的值了。
所有基本类型的包装类都是不可变类,String也是不可变类。
不可变类都是final的,所以不能被继承。
String s ="hello";
s += " world"
System.out.println(s);
输出 hello world
看起来String对象变了,其实没变,只是s这个引用指向了一个新的String对象。
优点:不可变类使用简单、线程安全、节省内存
缺点:不可变类的对象会因为值的不同而产生新的对象,从而导致无法预料的问题。