java.lang.String ---String字符串常量
在java中字符串属于对象,String类用来创建和操作字符串(它底层被final修饰的类)。但是String的值是不可变的,每次String的操作都会生成新的String对象,这样效率低下还浪费有限的内存空间。
String简单总结
①String不可变的字符序列
②new的对象,一定是创建了对象,在堆中开辟空间。
③直接赋值和new两种方式创建String类型的对象。
④直接赋值不一定创建对象,如果字符串常量池中有的话就直接堆中的实例指向常量池中,不需要创建对象。
⑤final修饰类,不能被继承。
⑥String a = “w”+“d”+“s”+“x”;这个字符串拼接过程要产生多个对象完成,效率比较低。
String str = 'a'+1+2;
String str2 = "a" +1+2;
String str3 = 1+2+"a";
str变量在编译时就报错
str2 = a12;
str3 = 3a;
StringBuffer 和 StringBuilder 类
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。StringBuffer 和 StringBuilder 类都继承自AbstractStringBuilder抽象类,由他们创建的对象能够被多次的修改,并且不产生新的未使用对象。
总结:
1.String字符串是不可变的。
2.在修改字符串操作比较多的时候用StringBuilder或StringBuffer.
在要求线程安全的情况下用StringBuffer
在不要求线程安全的情况下用StringBuilder
执行效率:StringBuilder>StringBuffer>String
安全性:String > StringBuffer >StringBuilder