Java常用类:StringBuffer 和 StringBuilder 类


StringBuffer 和 StringBuilder 类概述

  • StringBuffer:可变长字符串,由jdk1.0提供,运行效率慢,线程安全。
  • StringBuilder:可变长字符串,由jdk5.0提供,运行效率快,线程不安全。

和String类相比的优势

运行效率更快,可节省内存。

1. append()方法

概述

将指定的字符串追加到此字符序列。

语法

public StringBuffer append(String s)

举例

package com.ibelifly.commonclass.stringbuffer;

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        StringBuffer s=new StringBuffer();
        System.out.println(s.append("Java"));
        System.out.println(s.append("世界第一"));
    }
}

image-20210827111845374

2. insert(int offset, String str)方法

概述

从指定下标处,将String类型的字符串插入此序列中。

语法

public insert(int offset, String str)

offset:指定下标。

举例

package com.ibelifly.commonclass.stringbuffer;

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        StringBuffer s=new StringBuffer("Java世界第一");
        System.out.println(s.insert(0,"我认为"));
    }
}

image-20210827112514221

3. replace(int start, int end, String str) 方法

概述

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

语法

replace(int start, int end, String str) 

start:指定开始下标。

end:指定结束下标。

注意:遵循含头不含尾的原则。

举例

package com.ibelifly.commonclass.stringbuffer;

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        StringBuffer s=new StringBuffer("我认为Java世界第一");
        System.out.println(s.replace(0,1,"大部分人")); //含头不含尾,截止下标1之前
    }
}

image-20210827113227418

4. public delete(int start, int end)方法

概述

移除指定序列的子字符串中的字符。

语法

public delete(int start, int end)

start:指定开始下标。

end:指定结束下标。

注意:遵循含头不含尾的原则。

举例

package com.ibelifly.commonclass.stringbuffer;

public class Test1 {
    
    
    public static void main(String[] args) {
    
    
        StringBuffer s=new StringBuffer("我认为Java世界第一");
        System.out.println(s.delete(0,3));
    }
}

image-20210827113713021

小结

以上方法均以StringBuffer类为例,StringBuilder类中也有同样方法,这里不一一赘述。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。

String和StringBuilder的效率比较

我们用一段代码来验证StringBuilder比String的效率高的结论:

package com.ibelifly.commonclass.stringbuffer;

public class Test2 {
    
    
    public static void main(String[] args) {
    
    
        long start1=System.currentTimeMillis(); //开始时间
        String string="";
        for (int i = 0; i < 99999; i++) {
    
    
            string+=i;
        }
        long end1=System.currentTimeMillis(); //结束时间
        System.out.println("String类操作用时:"+(end1-start1));
        long start2=System.currentTimeMillis(); //开始时间
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < 99999; i++) {
    
    
            stringBuilder.append(i);
        }
        long end2=System.currentTimeMillis(); //结束时间
        System.out.println("StringBuilder类操作用时:"+(end2-start2));
    }
}

image-20210827120130120


参考视频:https://www.bilibili.com/video/BV1vt4y197nY?p=26

参考文章:https://www.runoob.com/java/java-stringbuffer.html

猜你喜欢

转载自blog.csdn.net/weixin_45605541/article/details/119949927