String类、StringBuilder类和StringBuffer类的区别

来源:互联网 发布:轻钢房屋设计软件 编辑:程序博客网 时间:2024/06/16 16:02

String类:一个String对象的长度是固定的,不能改变它的内容。你也许会使用“+”来串联字符串以达到附加新字符或字符串的目的,但每“+”一次就会产生一个新的String实例。如果程序对这种附加字符串的需求很频繁,并不建议使用“+”来进行字符串的串联.在面向对象程序设计中,最好是能重复运用已生成的对象,对象的生成需要内存空间与时间,不断地产生String实例是一个没有效率的行为。

这个时候,我们就应该考虑使用StringBuffer或StringBuilder.它们都是操作同一个对象,不另生成对象。

StringBuilder类是J2SE5.0开始提供的.在此之前,我们只能使用StringBuffer类.

StringBuilder与StringBuffer所使用的方法,初始化容量等等...几乎都是一样的.知道怎么用StringBuffer就知道怎么使用StringBuilder.

它们唯一的区别在于:

StringBuffer是线程安全的,可以运用于多线程.

StringBuilder是非线程安全的,只能用于单线程.在单线程的情况下,使用StringBuilder的效率要高于使用StringBuffer.

因为StringBuilder没有处理同步问题,StringBuffer则会处理同步问题.因此在多线程的情况下,为了线程安全,我们要改用

StringBuffer类,必竟安全比效率更重要.在单线程的情况下,为了效率(因为不存在线程安全问题),我们就要使用Stringbuilder。

原创粉丝点击