Java StringBuffer

Java StringBuffer教程

我们已经了解了 String 类 的基本概念,我们知道 String 定义的内容一旦声明就不能够改变了,如果改变的话,就是改变了 String 引用的地址。

如果在使用过程中一个字符串要经常改变,但是不想改变引用地址,我们就可以使用 StringBuffer 类。

Java StringBuffer详解

语法

StringBuffer 变量名称 = new StringBuffer(""); //构造方法赋值,构造方法可以为空,也可以传递字符,也可以传递数字

参数

参数 描述
StringBuffer StringBuffer关键字
new StringBuffer("") 构造方法里面可以传递数字,表示字符长度,可以为空,可以为字符串

说明

StringBuffer 对应的对象是 StringBuffer,不是 String,它可以随便改变字符串数据。

Java StringBuffer常用方法

序号 方法名称 描述
1 public StringBuffer() 无参构造方法
2 public StringBuffer append(char c); StringBuffer 追加字符
3 public StringBuffer append(String str); StringBuffer 追加字符串
4 public StringBuffer append(StringBuffer sb); StringBuffer 追加StringBuffer对象
5 public int indexOf(String str); 查看指定字符串在StringBuffer里面的位置,返回 -1 表示不存在
6 public int indexOf(String string fromIndex); 从 StringBuffer 指定位置查看指定字符串在StringBuffer里面的位置,返回 -1 表示不存在
7 public StringBuffer insert(int offset,String str) 在指定位置处加上指定字符串
8 public StringBuffer reverse() 将内容反转保存
9 public StringBuffer replace(int starting end,String str) 指定内容体会
10 public int length() 求出内容长度
11 public StringBuffer delete(int start,int end) 删除指定范围大字符串
12 public StringBuffer substring(int start) 字符串从指定开始位置截取
13 public StringBuffer substring(int start,int end) 截取指定范围的字符串
14 public String toString() 将内容转换为 String 类型

案例

package com.haicoder.net.stringbuffer; public class StringBufferTest { public static void main(String[] args) { System.out.println("嗨客网(www.haicoder.net)"); StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("嗨客网"); //追加信息 stringBuffer.append("(www.haicoder.net)"); //追加信息 System.out.println("stringBuffer 结果为 :" + stringBuffer.toString()); StringBuffer stringBuffer1 = new StringBuffer("嗨客网"); System.out.println("stringBuffer1 结果为 :" + stringBuffer1.toString()); stringBuffer.insert(0, "欢迎来到"); //在 0 位开始添加数据 System.out.println("在 0 位置处添加信息,结果为 :" + stringBuffer.toString()); System.out.println("字符反转 : " + stringBuffer1.reverse()); //字符反转 System.out.println("替换内容 : " + stringBuffer.replace(4,6,"面条小子").toString()); //替换指定位置内容 System.out.println("删除指定位置内容:" + stringBuffer.delete(4,9).toString()); //删除指定内容 System.out.println("确认指定内容(嗨客网)是否存在:" + stringBuffer.indexOf("嗨客网")); //由于上面删除掉来,所以查询不到,返回 -1 System.out.println("确认指定内容(来到)是否存在:" + stringBuffer.indexOf("来到")); //返回字符串第一个开始位置 } }

运行结果如下:

01 StringBuffer.png

由于 StringBuffer 定义的对象是引用类型的,所以我们每次操作的结果对下次操作都生效。例子里面我们将常用的方法调用了一下,和描述的结果一样。

Java StringBuffer总结

StringBuffer 里面的操作都是由 synchronized 修饰的,是 线程 安全的,与之对应的是 StringBuilder,它的速度比 StringBuffer 快,但是它不是线程安全的。在具体使用场景中,读者可以根据自己的要求来选定具体类。