1、String
String代表字符串常量。String是一个final Class。
String str = "abc";
等效于:
char data[] = {'a', 'b', 'c'};
String str = new String(data);
String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
在String类中特别要注意“==”和“equals”,他们有着本质的区别,“==”比较的是两个字符串的对象引用,而“equals”比较的是两个字符串的内容。
2、StringBuffer
StringBuffer类用于内容可以改变的字符串,可以将其他各种类型的数据增加、插入到字符串中,也可以翻转字符串中猿类的内容,并且可以把StringBuffer类生成的字符串通过StringBuffer类的tostring()方法转化成String类,然后就可以通过String类的各种方法操作该字符串了。
java中提供了“+”来连接两个String类型的字符串连接成一个新的字符串,在StringBuffer类中可以通过append方法实现。
StringBuffer为线程安全
3、StringBuilder
同Stringbuffer,但线程不安全
一般应用时的效率为
StringBuilder > StringBuffer > String