【知了堂学习笔记】_String、StringBuffer与StringBuilder的区别

时间:2024-12-06 18:36:44

String Stringbuffer  StringBuilder的区别:

1、string是字符串常量,且长度是不可改变的,Stringbuffer、stringBuilder是字符串变量

2、Stringbuffer是线程安全的,StringBuilder是非线程安全,主要用在全局变量中。

3、String是改变赋值的地址,而不是改变String中的值:

如:String a = “a”;//假设它的地址是001;值a是放在常量池中的

String a = “b”;//重新对a赋值后a指向的地址就002,且将值b放入常量池,而之前的值a也是存在的。

4、String是不可变的类,每次对String的操作都会生成新的String对象,不仅效率低下,而且会大量的浪费内存空间,对于StringBuffer,每次结果都会对StringBufer本身进行操作且不会产生新的对象和改变对象的引用,所有一般都使用Stringbuffer。

5、他们三个的运行速度不一样:

(1)通常情况下,三个的运行速度排列为:StringBuilder>Stringbuffer>String。但也有特殊情况,

如:String a=”a”+”b”;

Stringbuffer b=new StringBuilder(”a”)append(”b”);

以上的话String的速度要大于StringBuffer,因为在这种情况下JVM把String a看成了 String a=”ab”了。

6、运用场景

(1)如果是操作少量的数据使用String。

(2)单线程操作字符串缓冲区下操作大量数据使用StringBuilder。
(3).多线程操作字符串缓冲区下操作大量数据使用StringBuffer。

以上知识是我参考xieke90的博客进行整理,以上知识还存在一些不足,望各位多多包涵及补充指正。若需了解更多关于java的知识的可以进入知了堂社区进行了解http://www.zhiliaotang.com/portal.php