欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java StringBuffer 和 StringBuilder 类

程序员文章站 2022-06-28 22:32:07
...
    当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
public class Test{
    public static void main(String args[]){
        StringBuffer sBuffer = new StringBuffer("个人学习网站1:");
        StringBuilder sBuilder = new StringBuilder("个人学习网站2:");
        sBuilder.append("https://blog.csdn.net/");
        sBuilder.append("luomingkui1109");
        System.out.println(sBuilder);
        sBuffer.append("https://blog.csdn.net/");
        sBuffer.append("luomingkui1109");
        System.out.println(sBuffer);
    }
}

//运行结果如下:
个人学习网站1:https://blog.csdn.net/luomingkui1109
个人学习网站2:https://blog.csdn.net/luomingkui1109
2.String,StringBuffer  和  StringBuilder 的区别?
    String:不可变对象,每一次对 String对象的更改相当于生成一个新的String对象。
    StringBuffer:可变字符序列、效率低、线程安全。
    StringBuilder:可变字符序列、效率高、线程不安全。
    String是不可变对象,每一次对 String对象的更改相当于生成一个新的String对象,因此,要频繁进行更改的字符串最好不要使用String,会影响效率。相比之下,StringBuffer和StringBuilder都是可更改的对象,效率要大于String,他们之间的区别是这样的: StringBuffer 是支持多线程同步的,而StringBuilder是JDK5.0后出来的,专门针对单线程。所以,从效率上讲就是这样:StringBuilder > StringBuffer > String.

3.StringBuffer 和 StringBuilder 的常用方法:
    ① StringBuffer append(String str) : 添加
        StringBuffer insert(int offset, String str) : 插入
        StringBuffer replace(int start, int end, String str):替换
        StringBuffer reverse():反转
    ② int indexOf(String str) :返回子串的位置索引
        int lastIndexOf()
    ③ String substring(int start, int end):取子字符串序列
    ④ StringBuffer delete(int start, int end):删除一段字符串
        StringBuffer deleteCharAt(int index):删除指定位置字符
    ⑤ String toString():转换为String对象
    ⑥ char charAt(int n) :获取字符串中指定位置的字符

4.实例
(1) append()方法:向字符串添加内容
     这个是StringBuffer类的一个方法,用来把后面的字符串接到原来的字符串上面。
public static void main(String[] args) {
    StringBuffer appendSB = new StringBuffer("abc");
    appendSB.append("123");
    appendSB.append('2');
    appendSB.append(true);
    appendSB.append(123);
    System.out.println("appendSB:" + appendSB);
}
(2) insert(int offset,arg)方法 :用于向字符串生成器中的指定位置插入数据内容。语法如下:
     insert(int offset,arg)其中offset表示字符串生成器的位置,arg表示将插入字符串生成器的位置。
StringBuilder bf=new StringBuilder("hello");
bf.insert(5,"world");
System.out.println(bf);
(3) delete(int start,int end):删除字符串的起始位置和终止位置。
public static void main(String[] args) {
     StringBuilder bf=new StringBuilder("I");
     bf.insert(1," Love You");
     bf.delete(2,6);
     System.out.println(bf);
}