StringBuffer类 与 StringBilder类

目录

1.StringBuffer类概述

2.StringBuffer方法

3.String类StringBuffer类StringBuilder区别


1.StringBuffer类概述

我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String 对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题 线程安全的可变字符序列

  StringBuffer和String的区别:StringBuffer线程安全,值可变,只能用构造方法创建;改变StringBuffer的值,不会改变其地址。指的是char[]的值在变,数组没变

源代码:

 *  public StringBuffer(String str) {
         *         super(str.length() + 16);
         *         append(str);
         *     }
         *

2.StringBuffer方法

构造方法

public StringBuffer()

public StringBuffer(String str)

添加功能

public StringBuffer append(String str) 在字符串末尾添加str字符串

public StringBuffer insert(int offset,String str)

删除功能

public StringBuffer deleteCharAt(int index) 删除指定索引处的字符

public StringBuffer delete(int start,int end) 删除指定区间的字符串 包含开始,不包含结尾

替换功能

public StringBuffer replace(int start,int end,String str) 不包含结尾

反转功能

public StringBuffer reverse() 将字符串完全反转

截取功能

public String substring(int start)

public String substring(int start,int end)

注:截取功能和前面几个功能的不同,返回值类型是String类型,本身没有发生改变

 public static void main(String[] args) {
        /*
           StringBuffer线程安全的,值可变的字符串(指的是底层char[]的值在变)
            public StringBuffer() {
                    super(16);
            }
             AbstractStringBuilder(int capacity) {
                value = new char[capacity];
            }
            StringBuilder线程不安全的,值可变的字符串
         */

        //StringBuffer s1 = new StringBuffer(30);
        //StringBuffer s = new StringBuffer();//创建了一个字符串对象,底层是是一个char数组
        StringBuffer s2 = new StringBuffer("abcd");
                     s2.append("11111");
                     s2.append("22222");
                     s2.append("33333");
                     s2.append("44444");
                     //s2.insert(1, "xxxx");
                     //s2.deleteCharAt(2);
                     //s2.delete(0,5);//删除指定区间的字符串  包含开始,不包含结尾
        // System.out.println(s2.reverse());

        //System.out.println(s2.replace(0, 5, "ccccc"));

         String ss = new String(s2);//new String(StringBuffer s)


       StringBuilder s1 = new StringBuilder();

       /*
         String: 值不能变  底层 final char [] value;  一旦需要改变值,必须重新创建一个String value=value+111;

         StringBuffer 值可变   char [] value  继承 AbstractStringBuilder
         StringBuilder 值可变  char [] value  继承 AbstractStringBuilder

            StringBuffer  添加synchronized 同步锁  多线程安全
                 public synchronized StringBuffer append(String str) {
                        toStringCache = null;
                        super.append(str);调用父类
                        return this;
                    }
            StringBuilder  没有添加同步锁  多线程不安全
                public StringBuilder append(String str) {
                    super.append(str);  调用父类
                    return this;
                }
        */

    }

3.String类StringBuffer类StringBuilder区别

  • StringBuilder类功能和StringBuffer功能完全一致, StringBuffer是线程安全的

  • String:是字符常量,适用于少量的字符串操作的情况

    StringBuilder适用于单线程下在字符缓冲区进行大量操作的情况

    StringBuffer适用多线程下在字符缓冲区进行大量操作的情况

最后,觉得有用的话,可以点赞、收藏,加关注哟,要不下次就找不见了哟!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值