码迷,mamicode.com
首页 > 其他好文 > 详细

StringBuffer类详解(String、StringBuffer、StringBuilder的区别)

时间:2014-08-30 11:15:19      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:string与stringbuffer的   string与stringbuilder   stringbuffer与stringb   

StringBuffer类详解

1.类结构:

·        java.lang.Object

·        java.lang.StringBuffer

·        All Implemented Interfaces:

Serializable, Appendable, CharSequence


public final class StringBuffer

extends Object

implements Serializable, CharSequence

2.类概述:

    一个类似于 String 的字符串缓冲区,但不能修改。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。

可将字符串缓冲区安全地用于多个线程。可以在必要时对这些方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致。

StringBuffer 上的主要操作是append 和insert 方法,可重载这些方法,以接受任意类型的数据。每个方法都能有效地将给定的数据转换成字符串,然后将该字符串的字符追加或插入到字符串缓冲区中。append 方法始终将这些字符添加到缓冲区的末端;而insert 方法则在指定的点添加字符。

每个字符串缓冲区都有一定的容量。只要字符串缓冲区所包含的字符序列的长度没有超出此容量,就无需分配新的内部缓冲区数组。如果内部缓冲区溢出,则此容量自动增大。从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。

 

3.构造方法

Public Constructors

 

StringBuffer()

构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。

 

StringBuffer(int capacity)

构造一个不带字符,但具有指定初始容量的字符串缓冲区。

 

StringBuffer(String string)

构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

 

StringBuffer(CharSequence cs)

构造一个字符串缓冲区,它包含与指定的 CharSequence相同的字符。

4.常用方法:

Public Methods

StringBuffer

append(double d)

 将 double 参数的字符串表示形式追加到此序列。

StringBuffer

append(boolean b)

将 boolean 参数的字符串表示形式追加到序列。

StringBuffer

append(long l)

将 long 参数的字符串表示形式追加到此序列。

StringBuffer

append(float f)

将 float 参数的字符串表示形式追加到此序列。

StringBuffer

append(int i)

将 int 参数的字符串表示形式追加到此序列。

StringBuffer

appendCodePoint(int codePoint)

将 codePoint 参数的字符串表示形式追加到此序列。

int

capacity()

返回当前容量。

StringBuffer

delete(int start, int end)

移除此序列的子字符串中的字符。

StringBuffer

deleteCharAt(int index)

移除此序列指定位置的 char。

int

indexOf(String string)

返回第一次出现的指定子字符串在该字符串中的索引。

StringBuffer

insert(int index, int i)

将 int 参数的字符串表示形式插入此序列中。

StringBuffer

insert(int index, double d)

将 double 参数的字符串表示形式插入此序列中。

StringBuffer

insert(int index, long l)

将 long参数的字符串表示形式插入此序列中。

StringBuffer

insert(int index, Object obj)

将 Object 参数的字符串表示形式插入此字符序列中。

StringBuffer

insert(int index, float f)

将 float 参数的字符串表示形式插入此序列中。

StringBuffer

insert(int index, boolean b)

将 boolean参数的字符串表示形式插入此序列中。

int

lastIndexOf(String string)

返回最右边出现的指定子字符串在此字符串中的索引。

int

length()

返回长度(字符数)。

StringBuffer

replace(int start, int end, String str)

使用给定 String 中的字符替换此序列的子字符串中的字符。

 

5. String、StringBuffer、StringBuilder的区别

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。

StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuilder和StringBuffer类功能基本相似,主要区别在于StringBuffer类的方法是多线程、安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。

一般情况下,速度从快到慢:StringBuilder>StringBuffer>String,这种比较是相对的,不是绝对的。

总结:

1) 如果要操作少量的数据用String

2) 单线程操作字符串缓冲区下操作大量数据用 StringBuilder

3) 多线程操作字符串缓冲区下操作大量数据用StringBuffer

StringBuffer类详解(String、StringBuffer、StringBuilder的区别)

标签:string与stringbuffer的   string与stringbuilder   stringbuffer与stringb   

原文地址:http://blog.csdn.net/fengyuzhengfan/article/details/38942591

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!