StringBuffer介绍(转)

本文详细介绍了Java中的StringBuffer类,包括其构造函数、方法及其用途。StringBuffer类用于存储和操作字符串,相较于String类,StringBuffer的字符串内容可以进行修改和扩充。文章深入探讨了StringBuffer类的方法,例如append、delete、insert、reverse等,以及如何使用这些方法进行字符串的追加、删除、插入和翻转操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原链接:http://baike.baidu.com/view/1486261.htm

StringBuffer

目录

StringBuffer 类
StringBuffer类的方法有:

编辑本段StringBuffer 类

  String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。
  String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。
  StringBuffer类的构造函数
  public StringBuffer()
  创建一个空的StringBuffer类的对象。
  public StringBuffer( int length )
  创建一个长度为 参数length 的StringBuffer类的对象。
  注意:如果参数length小于0,将触发NegativeArraySizeException异常。
  public StringBuffer( String str )
  用一个已存在的字符串常量来创建StringBuffer类的对象。

编辑本段StringBuffer类的方法有:

  
StringBuffer append(boolean b) 这些方法都是向字符串缓冲区“追加”元素,但是,这个“元素”参数可以是布尔量、字符、字符数组、双精度数、浮点数、整型数、长整型数对象类型的字符串、字符串和StringBuffer类等。如果添加的字符超出了字符串缓冲区的长度,Java将自动进行扩充。
StringBuffer append(char c) 同上
StringBuffer append(char[] str) 同上
StringBuffer append(char[] str, int offset, int len) 同上
StringBuffer append(double d) 同上
StringBuffer append(float f) 同上
StringBuffer append(int i) 同上
StringBuffer append(long l) 同上
StringBuffer append(Object obj) 同上
StringBuffer append(String str) 同上
StringBuffer append(StringBuffer sb) 同上
int capacity() 返回当前StringBuffer对象(字符串缓冲区)的总空间,而非字符号串的长度。
char charAt(int index) 在当前StringBuffer对象中取索引号为index的字符。第一个字符的索引为“0”
StringBuffer delete(int start, int end) 删除当前StringBuffer对象中以索引号start开始,到end结束的子串。
StringBuffer deleteCharAt(int index) 删除当前StringBuffer对象中索引号为index的字符。
void ensureCapacity (int minimumCapacity) 重新设置字符号串缓冲区的总空间。如果minimumCapacity大于当前的总空间,则新的空间被设置:一种结果是minimumCapacity;另一种结果是{“老空间”乘2加2}。
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 从当前StringBuffer对象的索引号srcBegin开始,到srcEnd结束的子串,赋值到字符数组dst中,并且从dst的索引号dstBegin开始。
int indexOf(String str) 返回当前StringBuffer对象中,第一个满足str子串的位置。
int indexOf(String str, int fromIndex) 从当前StringBuffer对象的fromIndex开始查找,返回第一个满足str子串的位置。
StringBuffer insert(int offset, boolean b) 这些方法都是在当前StringBuffer对象中插入一个元素,在索引号offset处插入相应的值。
StringBuffer insert(int offset, char c) 同上
StringBuffer insert(int offset, char[] str) 同上
StringBuffer insert(int index, char[] str, int offset, int len) 同上
StringBuffer insert(int offset, double d) 同上
StringBuffer insert(int offset, float f) 同上
StringBuffer insert(int offset, int i) 同上
StringBuffer insert(int offset, long l) 同上
StringBuffer insert(int offset, Object obj) 同上
StringBuffer insert(int offset, String str) 同上
int lastIndexOf(String str) 返回当前StringBuffer对象中,最后一个满足str子串的位置。
int lastIndexOf(String str, int fromIndex) 从当前StringBuffer对象的fromIndex开始查找,返回最后一个满足str子串的位置。
int length() 返回当前StringBuffer对象(字符缓冲区)中,字符串的长度。
注意:此方法与capacity() 不同。
StringBuffer replace(int start, int end, String str) 替换当前StringBuffer对象的字符串。从start开始,到end结束的位置替换成str。
StringBuffer reverse() 将字符串翻转。
void setCharAt(int index, char ch) 设置索引号index的字符为ch。
void setLength(int newLength) 重新设置字符串缓冲区中字符串的长度,如果newLength小于当前的字符串长度,将截去多余的字符。
String substring(int start) 取当前StringBuffer对象中,从start开始到结尾的子串。
String substring(int start, int end) 取当前StringBuffer对象中,从start开始到end的子串。
String toString() 将当前StringBuffer对象转换成String对象
  public String toString()
  转换为String类对象并返回。由于大多数类中关于显示的方法的参数多为String类的对象,所以经常要将StringBuffer类的对象转换为String类的对象,再将它的值显示出来。用法如:
  StringBuffer sb=new StringBuffer("How are you?");
  Label l1=new Label(sb.toString());
  (注:声明一个标签对象l1,l1上的内容为How are you?)
  public StringBuffer append( boolean b )
  public StringBuffer append( char c )
  public StringBuffer append( int i)
  public StringBuffer append( long l )
  public StringBuffer append( float f )
  public StringBuffer append( double d )
  以上6个方法可将boolean、char、int、long、float和double 6种类型的变量追加到StringBuffer类的对象的后面。用法如:
  double d=123.4567;
  StringBuffer sb=new StringBuffer();
  sb.append(true);
  sb.append('c').append(d).append(99);
  (注:sb的值为truec123.456799)
  public StringBuffer append( String str )
  将字符串常量str追加到StringBuffer类的对象的后面。
  public StringBuffer append( char str[] )
  将字符 数组str追加到StringBuffer类的对象的后面。
  public StringBuffer append
  ( char str[], int offset, int len )
  将字符数组str,从第offset个开始取len个字符,追加到StringBuffer类的对象的后面。
  public StringBuffer insert
  ( int offset, boolean b )
  public StringBuffer insert
  ( int offset, char c )
  public StringBuffer insert
  ( int offset, int i )
  public StringBuffer insert
  ( int offset, long l )
  public StringBuffer insert
  ( int offset, float f )
  public StringBuffer insert
  ( int offset, double d )
  public StringBuffer insert
  ( int offset, String str )
  public StringBuffer insert
  ( int offset, char str[] )
  将boolean、char、int、long、float、double类型的变量、String类的对象或字符数组插入到StringBuffer类的对象中的第offset个位置。用法如:
  StringBuffer sb=new StringBuffer("abfg");
  sb.insert(2,"cde");
  (注:sb的值为abcdefg)
  public int length()
  这个方法返回字符串变量的长度,用法与String类的length方法类似。
  StringBuffer sbf=new StringBuffer();
  System.out.println(sbf.capacity());
  System.out.println(sbf.length());
  输出 16 ,0.
  默认构造器是由系统自动分配容量,默认是16个字符。由于没有赋值,所以缓冲对象的长度就是0.
  StringBuffer sbf=new StringBuffer(100);设定容量大小的构造器
  charAt()方法可以返回字符中的单个字符
  setCharAt(0,‘x’) 方法可以对字符中的单个字符进行替换
  reverse() 方法可以倒置字符串内容。
### StringBuffer 的基本概念 `StringBuffer` 是 Java 中的一个类,用于处理可变字符串。与 `String` 不同的是,`String` 类的对象一旦创建便不可更改(即它们是不可变的),而 `StringBuffer` 对象的内容可以随时修改[^3]。 以下是关于 `StringBuffer` 的一些重要特性: - 它是一个线程安全的可变字符序列。 - 所有操作都会同步执行,因此适合在多线程环境中使用。 - 提供了许多方法来操作字符串内容,比如追加、删除、替换以及反等。 ### 创建和初始化 StringBuffer 可以通过多种方式创建一个 `StringBuffer` 实例: ```java // 使用无参构造函数创建空的 StringBuffer StringBuffer sb1 = new StringBuffer(); // 使用带有初始容量的构造函数 StringBuffer sb2 = new StringBuffer(16); // 使用指定字符串作为初始值 StringBuffer sb3 = new StringBuffer("Hello"); ``` 以上代码展示了如何通过不同的构造器来实例化 `StringBuffer` 对象[^4]。 ### 常见的操作方法 #### 追加数据 (`append`) `append()` 方法允许向现有的 `StringBuffer` 对象后面添加新的数据片段。 ```java StringBuffer buffer = new StringBuffer(); buffer.append("Java "); buffer.append("is "); buffer.append("fun!"); System.out.println(buffer); // 输出: Java is fun! ``` 此段代码演示了如何利用 `append()` 将多个部分连接成完整的句子[^5]。 #### 插入数据 (`insert`) 如果需要在一个特定位置插入新内容,则可以调用 `insert()` 方法。 ```java StringBuffer strBuf = new StringBuffer("Happy Birthday"); strBuf.insert(5, " New Year,"); System.out.println(strBuf.toString()); // Happy New Year, Birthday ``` 这里说明了怎样把 “New Year,” 放置到原字符串中间的位置上[^6]。 #### 删除子串 (`delete`) 当要移除某一段连续区域内的字符时,可以选择 `delete(startIndex,endIndex)` 函数实现这一目标。 ```java StringBuffer sbuf = new StringBuffer("0123456789"); sbuf.delete(3, 6); System.out.println(sbuf); // 结果为:0123789 ``` 上述例子清楚地表明从索引 3 到索引 5 被成功去除了[^7]。 #### 替换子串 (`replace`) 为了替换成另外一组字符集合,应该采用 `replace(indexStart,indexEnd,String)` 方式完成更新过程。 ```java StringBuffer sampleStrBuff = new StringBuffer("abcdefg"); sampleStrBuff.replace(2, 5, "XYZ"); System.out.println(sampleStrBuff); // abcXYZfg ``` 这段程序解释了如何将原始字符串中的某些字母更换成了其他符号[^8]。 #### 反顺序 (`reverse`) 最后介绍一种非常实用的功能——翻整个字符串的方向布局。 ```java StringBuffer reverseExample = new StringBuilder("hello world").reverse(); System.out.println(reverseExample); // dlrow olleh ``` 注意这里是用了 `StringBuilder`, 因为它也支持同样的功能而且性能更优如果没有考虑线程安全性的话[^9]. ### 性能考量 尽管 `StringBuffer` 非常强大并提供了丰富的 API 接口,但由于其内部实现了同步机制,在单线程环境下可能不如它的兄弟类 `StringBuilder` 效率高。所以在开发过程中需权衡两者之间的差异再做决定[^10]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值