String类型、表示字符串,Java中所有字符串如”123”都用此类型为实例、字符串是产量,他的值创建后就不可以修改了;
应为String是不可变类型,所以如果字符串拼接时的话如果用String的话可能会降低性能,所以JDK又提供了两个可变的字符串类StringBuilder和StringBuffer;
String和stringbuilder、stringbuffer的区别:
1、可变性:
String类型对象一旦创建后是不可变的,一旦创建后知道这个对象被销毁都是不可以改变的;
Stringbuilder和stringbuffer类型字符串可以改变;
2、安全性:
String类型是对象是不可变的,是线程安全的;
Stringbuffer类型是线程安全的,因为在他的内部有synchronized锁来保证线程安全;而stringbuilder类型不是线程安全的;
3、性能:
String类型在每次操作更改对象时,都会创建出新的对象,并将指针指向新的对象,效率极低,stringbuffer、stringbuilder每次更改都是在对象本身进行操作,不会生成新的对象来改变对象的引用,性能相对较好,相同情况下stringbuilder要比stringbuffer性能好上百分之时左右,但是stringbuilder是线程不安全的;
4、使用场景:
少量字符串操作可以直接使用string类型;
单线程操作字符串缓冲区大量字符串使用stringbuilder;
多线程操作字符串缓冲区大量字符串使用stringbuffer;