Java中String StringBuffer StringBuilder的区别
String
String类是不可变类,也就是说一个String对象被创建后,这个对象中的字符串是不可改变的,直到该对象被销毁。
String str = "hello";
str = str + "world";
好像String类对象str改变了,实际上这是一种错觉。
程序第一行str指向的内存存放“hello”字符串,第二行代码执行后,又开辟了一块新的内存空间,存放的内容是"hello world",此时等号左边的String对象str实际已经指向了这个"hello world"所在的位置,指向的已经不再是之前的位置。
StringBuffer
StringBuffer对象代表一个字符序列可变的字符串,当该类型的对象被创建后,可以通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法来改变这个字符串对象的字符序列。另外,StringBuffer是线程安全的。
StringBuilder
StringBuilder对象也代表一个字符序列可变的字符串,既然已经有了StringBuffer类代表可变的字符串,那为什么在JDK1.5之后又新增了一个StringBuilder类呢。
因为StringBuffer是线程安全的,而为了保证线程安全,造成了性能的降低,但在实际使用中我们并不一定任何时候都必须保证程安全,比如我就只有一个线程,所以此时具有线程安全性就没有必要了,出于这方面的考虑,再次提出了StringBuilder类,该类不具备线程安全功能,所以性能略高。因此在通常情况下,如果需要创建一个内容可变的字符串对象,可优先考虑StringBuilder类。
总结:
(1)如果是操作少量的数据我们直接使用 String即可;
(2)如果是多线程下操作字符串,缓冲区下操作大量数据,我们就必须使用 StringBuffer;
(3)如果单线程操作字符串,缓冲区下操作大量数据,我们最好使用 StringBuilder。
- Java String/StringBuilder/StringBuffer的区别
- java.lang.StringBuffer与java.lang.StringBuilder的作用?区别是什么?
- JAVA基础之InterView(一)--String+StringBuffer+StringBuilder的区别
- StringBuilder StringBuffer String的区别(源码分析)-java
- Java软件低级错误(二十 ):正确理解String/StringBuffer/StringBuilder的性能区别
- java语言:String StringBuffer StringBuilder区别
- Java中String和StringBuffer/StringBuilder的区别
- Java String,StringBuilder和StringBuffer的区别 StringBuilder > StringBuffer> String
- JAVA String StringBuffer StringBuilder 区别
- Java中String/StringBuffer/StringBuilder区别
- java中string stringbuffer stringbuilder的本质区别
- 浅谈java中String StringBuffer StringBuilder的区别
- java 面试专题(二)String StringBuffer StringBuilder的区别
- Java千百问_06数据结构(021)_StringBuffer/StringBuilder有什么区别
- Java - String vs StringBuffer vs StringBuilder
- Java StringBuffer和StringBuilder的区别
- Java String StringBuffer的区别(性能)
- String StringBuffer StringBuilder 三者的区别
- String StringBuffer StringBuilder 三者的区别
- string stringbuffer stringbuilder 区别