String 、StringBuffer、 StringBuilder的区别

原创 2016年05月31日 09:32:35

从长度上进行比较的话:

String 是定长的,不可改变的;

StringBuffer,和StringBuilder 是不定长,可改变

另外需要注意的是:StringBuilder 和StringBuffer 的equals 方法不能用来比较两个字符串的内容是否相等,这两个类都直接继承自Object ,并且没有重写equals 方法。

StringBuilder s1 = new StringBuilder("123");   
StringBuilder s2 = new StringBuilder("123"); 
Logger.e(s1.equals(s2));  
输出结果是:false 
 

若要比较内容是否相同,s1.toString().equals(s2.toString());

简单说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度一定会是相当慢的。


java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。两者的方法基本相同。

  若要比较内容是否相同,sb1.toString().equals(sb2.toString())
  简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java之String、StringBuilder、StringBuffer的区别

String : 字符串常量,它们的值在创建之后不能更改。代表字符串,Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。   String的值是不可变的,这就导致每次对...
  • T_P_F
  • T_P_F
  • 2017-01-12 14:59
  • 81

java中String、StringBuffer、StringBuilder的区别

java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区别也是经常在面试中会问到的问题。现在总结一下,看看他们的不同与相同。 1.可变与不...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

String、StringBuilder和StringBuffer之间的区别

String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全)  简要的说, String 类型和 StringBuffer 类...

小白学习之路(一):stringbuilder ,stringbuffer,string区别

小白学习之路,不当之处欢迎大家指出纠正

C#中String,StringBuffer,StringBuilder 之间区别

在字符串处理中C#提供了String、StringBuffer、StringBuilder三个类。那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下: 1、  三者在执行速度...

Java:String、StringBuffer和StringBuilder的区别

1 String String:字符串常量,字符串长度不可变。 2 StringBuffer StringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)