Java StringBuffer类和 StringBuild类

Java StringBuffer类和 StringBuild类


StringBuffer类

介绍:java.lang.StringBuffer 代表 可变的字符序列,可以对字符串内容进行删减,此时不会参数新的对象。
StringBuffer继承于AbstractStringBuilder,可以看见value没有final声明, value可以不断扩容。

在这里插入图片描述

StringBuffer类的构造器

StringBuffer 类不同于 String ,其对象必须使用构造器生成。有三个构造器:

  • StringBuffer():初始 容量为 16 的字符串缓冲区
    为什么说容量为16呢?看下源码:
    在这里插入图片描述
  • StringBuffer(int size )):构造 指定容量的字符串缓冲区
  • StringBuffer(String str )):将 内容初始化为指定字符串内容
    这里我们来使用一下这三个构造器:
package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer();
        StringBuffer s2 = new StringBuffer(10);
        StringBuffer s3 = new StringBuffer("我爱喜欢写博客");
        s1.append("a");
        s1.append(1);
        s1.append(false);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

结果如下:
在这里插入图片描述

StringBuffer类的常用方法

  • StringBuffer append ( xxx):提供了很多的 append() 方法 用于进行字符串拼接

实例代码

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("武汉");
        s1.append("加油");
        System.out.println(s1);
    }
}

结果:
在这里插入图片描述

  • StringBuffer delete (int start,int end):删除指定位置的内容

实例代码

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("afasf1411");
        s1.delete(0,5);
        System.out.println(s1);
    }
}

结果为:
在这里插入图片描述

  • StringBuffer replace (int start, int end, String str):把 [start,end) 位置替换为 str

实例代码

扫描二维码关注公众号,回复: 9633621 查看本文章
package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("afasf1411");
        s1.replace(0,5,"123");
        System.out.println(s1);
    }
}

  • StringBuffer insert (int offset, xxx):在指定位置插入 xxx

实例代码

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("Iyou");
        s1.insert(1,"love");
        System.out.println(s1);
    }
}

结果为:
在这里插入图片描述

  • StringBuffer reverse ():把当前字符序列逆转

实例代码:

package com.StringBuffer;

public class StringBuffer01 {
    public static void main(String[] args) {
        StringBuffer s1 = new StringBuffer("Iloveyou");
        s1.reverse();
        System.out.println(s1);
    }
}

结果为:
在这里插入图片描述
另外一些:

StringBuilder类

StringBuilder 和 StringBu ffer 非常类似,均代表可变的字符序列 而且提供相关功能的方法 也 一样
它的源代码:
StringBuilder继承于AbstractStringBuilder,可以看见value没有final声明, value可以不断扩容。
在这里插入图片描述

StringBuilder的构造器

和 StringBuffer类似
在这里插入图片描述

StringBuilder的常用方法

与StringBuffer类似,就不再累述了

String、StringBuffer、StringBuild效率比较

String:不可变的字符序列;
StringBuffer:可变的字符序列;线程安全的,效率低(相比StringBuffer);
StringBuilder:可变的字符序列;jdk5.0新增的,线程不安全的,效率高;

三者的效率测试

代码如下`在这里插入代码片

package com.StringBuffer;

public class Test {
    public static void main(String[] args) {
        long StartTime = 0l;
        long EndTime = 0L;
        String text ="";
        StringBuffer buffer = new StringBuffer("");
        StringBuilder builder = new StringBuilder("");
        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            buffer.append(i);
        }
        EndTime = System.currentTimeMillis();
        System.out.println("StringBuffer执行的时间为"+(EndTime-StartTime));

        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
            builder.append(i);
        }
        EndTime = System.currentTimeMillis();
        System.out.println("StringBuilder执行的时间为"+(EndTime-StartTime));

        StartTime = System.currentTimeMillis();
        for (int i=0;i<200000;i++){
           text += i;
        }
        EndTime = System.currentTimeMillis();
        System.out.println("String执行的时间为"+(EndTime-StartTime));
    }
}

结果,还是很明显的:
在这里插入图片描述

喜欢就点个赞吧!!!

发布了17 篇原创文章 · 获赞 20 · 访问量 4717

猜你喜欢

转载自blog.csdn.net/weixin_45640609/article/details/104704813
今日推荐