Java常用类:StringBuffer和StringBuilder类

Java常用类:StringBuffer和StringBuilder类


可变字符串

  • StringBuffer :可变长字符串,JDK1.0提供,运行效率慢,线程安全
  • StringBuilder :可变长字符串,JDK5.0提供,运行效率快,线程不安全
  • 由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder

常用方法

  • append(String s);将指定的字符串追加到此字符序列

  • insert(int offset, String str);将str字符串插入此字符串中

  • replace(int start, int end, String str);使用str替换掉指定范围的子字符串

  • delete(int start, int end);删除指定范围的子字符串

  • reverse();反转字符串

示例:

public class Demo01 {

    public static void main(String[] args) {

        System.out.println("StringBuffer:");
        StringBuffer sb = new StringBuffer("Blog:");
        //append();末尾追加
        sb.append("Java");
        System.out.println(sb);
        sb.append("永远滴神");
        System.out.println(sb);
        //insert();指定位置插入
        sb.insert(9," SE");
        System.out.println(sb);
        //replace();指定位置替换
        sb.replace(0,5,"博客:");//左闭右开区别[0,5)
        System.out.println(sb);
        //delete();指定位置删除
        sb.delete(0,3);//左闭右开区别[0,3)
        System.out.println(sb);
        //reverse();字符串翻转
        sb.reverse();
        System.out.println(sb);

        System.out.println("=================");

        //StringBuffer 和 StringBuilder差不多
        System.out.println("StringBuilder:");
        StringBuilder sb1 = new StringBuilder("Blog:");
        //append();末尾追加
        sb1.append("Java");
        System.out.println(sb1);
        sb1.append("永远滴神");
        System.out.println(sb1);
        //insert();指定位置插入
        sb1.insert(9," SE");
        System.out.println(sb1);
        //replace();指定位置替换
        sb1.replace(0,5,"博客:");//左闭右开区别[0,5)
        System.out.println(sb1);
        //delete();指定位置删除
        sb1.delete(0,3);//左闭右开区别[0,3)
        System.out.println(sb1);
        //reverse();字符串翻转
        sb1.reverse();
        System.out.println(sb1);

    }

}

输出

StringBuffer:
Blog:Java
Blog:Java永远滴神
Blog:Java SE永远滴神
博客:Java SE永远滴神
Java SE永远滴神
神滴远永ES avaJ
=================
StringBuilder:
Blog:Java
Blog:Java永远滴神
Blog:Java SE永远滴神
博客:Java SE永远滴神
Java SE永远滴神
神滴远永ES avaJ

验证效率

  • StringBuffer 和 StringBuilder 类都比 String 类运行快

  • 验证: StringBuilder > StringBuffer > String

  • 实例:

    public class Demo02 {
    
        public static void main(String[] args) {
    
            //开始时间
            long star = System.currentTimeMillis();
            String str1 = "";
            for (int i = 0; i < 55555; i++) {
                str1 += i;
            }
            //结束时间
            long end = System.currentTimeMillis();
            System.out.println("String用时:" +(end-star));
    
            //开始时间
            long star1 = System.currentTimeMillis();
            StringBuffer str2 = new StringBuffer();
            for (int i = 0; i < 55555; i++) {
                str2.append(i);
            }
            //结束时间
            long end1 = System.currentTimeMillis();
            System.out.println("StringBuffer用时:" +(end1-star1));
    
            //开始时间
            long star2 = System.currentTimeMillis();
            StringBuilder str3 = new StringBuilder();
            for (int i = 0; i < 55555; i++) {
                str3.append(i);
            }
            //结束时间
            long end2 = System.currentTimeMillis();
            System.out.println("StringBuilder用时:" +(end2-star2));
    
        }
    
    }
    

    输出

    String用时:1851
    StringBuffer用时:7
    StringBuilder用时:4
    
posted @ 2021-04-16 18:06  D..T  阅读(52)  评论(0编辑  收藏  举报