String, StringBuffer和StringBuilder的区别
String:
1. String是对象,但是不是原始类型。
2. String为不可变对象,一旦被创建,就不能修改他的值了。
3. 对于已经存在的String对象的修改都是重新创建一个新的对象,然后把新的值保存进去。
4. String是final类,不能被继承。
StringBuffer:
1. StringBuffer是一个可变的对象,对它进行修改的时候,不会像String那样重新创建对象。
2. StringBuffer只能通过构造函数来创建。
3. StringBuffer对象创建后,在内存中就会分配内存空间,并初始保存一个Null。向StringBuffer中赋值时,可以通过它的append方法。
4. StringBuffer是线程安全的。
StringBuilder:
1. StringBuilder与StringBuffer功能类似,但是它是非线程安全的。
2. StringBuilder是JDK1.5时引入的,为StringBuffer补充了一个单个线程使用的等价类,即 StringBuilder。与StringBuffer相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
下面我们来看个小例子就一清二楚了,
eg1. String
String a= "A";a += "B";
StringBuilder sb = new StringBuilder("A");sb.append("B");