由于字符串是常量,因此一旦被创建,其内容和长度是不可改变的。如果需要对一个字符串进行修改,则只能创建新的字符串。为了便于对字符串的修改,在JDK中提供了一个StringBuffer类(也称字符串缓冲区)。StringBuffer类和String类最大的区别在于它的内容和长度都是可以改变的。StringBuffer类,类似一个容器,当在其中添加或删除字符时,并不会产生新的StringBuffer对象。

StringNuffer类的特点

  • 长度是可变化的。
  • 可以字节操作多个数据类型。
  • 最终会通过toString方法变成字符串。

StringBuffer类的常用方法

  1. 存储

    • StringBuffer append(char c) 将指定数据作为参数添加到已有数据结尾处
    • StringBuffer insert(int offset,String str) 将字符串中的offset位置插入字符串str
  2. 删除

    • StringBuffer delete(int start,int end) 删除StringBuffer对象中指定范围的字符或字符串序列(包含start,不包含end)。
    • Stringbuffer deleteCharAt(int index) 移除次序列指定位置的字符
  3. 获取

    • char charAt(int index) 获取指定位置的字符
    • int indexOf(String str) 获取指定字符串的位置
    • int lastIndexOf(String str) 获取指定字符串最后一次出现的位置
    • int length() 获取字符串的长度
    • String substring(int start, int end) 获取指定位置的字符串
  4. 修改

    • StringBuffer replace(int start,int end,String s) 在StringBuffer对象中替换指定的字符或字符串序列(包括star不包括end)
    • void setCharAt(int index,char ch) 修改指定位置index处的字符序列
  5. 反转

    • StringBuffer reverse() 将此字符串序列用其反转形式取代

注意:JDK1.5 版本之后出现了StringBuilder,StringBuffer是线程同步。,StringBuilder是线程不同步,以后开发,建议使用StringBuilder。

代码示例:

public class StringBufferDemo {
    public static void main(String [] args) {
        sop("添加");
        add();
        sop("删除");
        delete();
        sop("获取");
        select();
        sop("修改");
        alert();
    }
    public static void add() {
        StringBuffer sb = new StringBuffer();
        sb.append("dddddd");
        sop("在末尾处添加:"+sb);
        sb.insert(2,"12");
        sop("在第二个位置添加12:"+sb);
    }
    public static void delete() {
        StringBuffer sb = new StringBuffer("abcdefghigklmn");
        sb.delete(0,2);
        sop("删除0到2位置的"+sb);
        sb.deleteCharAt(3);
        sop("删除第3个位置的字符"+sb);
    }
    public static void select() {
        StringBuffer sb = new StringBuffer("abcdefghigak");
        sop("获取下标为2的字符"+sb.charAt(2));
        sop("获取字符e的下标"+sb.indexOf("e"));
        sop("获取a最后一次出现的下标"+sb.lastIndexOf("a"));
        sop("获取字符串的长度"+sb.length());
        sop("获取1到3位置的字符串"+sb.substring(1,3));
    }
    public static void alert() {
        StringBuffer sb = new StringBuffer("abcdefghigkl");
        sop("修改1到3位置上的字符串为zz:"+sb.replace(1, 3, "zz"));
        sb.setCharAt(5,'r');
        sop("修改5位置上的字符为r:"+sb);
        sop("反转"+sb.reverse());
    }
    public static void sop(Object obj) {
        System.out.println(obj);
    }
}
Last modification:August 26th, 2017 at 01:30 pm
If you think my article is useful to you, please feel free to appreciate