String,Sringbuffer , Stringbuilder的区别

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

 

发布了91 篇原创文章 · 获赞 1 · 访问量 3216

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/104135390