JAVA-StringBuffer

本文详细介绍了StringBuffer类的特点和用途,对比了String与StringBuffer的区别,包括长度可变性及内容可变性。此外,还提供了StringBuffer的常用方法示例,如append、delete和insert等,并通过一个具体的Java代码实例展示了如何使用StringBuffer处理字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

它是一个增强的String类,在长度可变上增强了。长度和内容都可变。
String是不可变的类型,即创建一个String对象后,就不能修改这个String,平常使用的”aa”+”bb”生成”aabb”这个过程中,实际是创建了三个String对象:”aa”, “bb”, “aabb”

StringBuffer是相对于String的一个可变的类型,StringBuffer可以在原对象上进行加长或缩短等修改操作。适用于需要大量连接字串或拼接处理字串的情况,相应的情况下就不宜使用String对象了。

常用方法
append//添加;在末尾添加
delete(int start, int end)//删除
insert(int offset, boolean b)//insert能在字符串的任意位置添加,而append只能在末尾
trimToSize()//将字符数组序列中,没有使用的元素删除
capacity()//显示容量
lenght()//显示长度

/**
     * 1:定义一个StringBuilder的对象sb。打印输出当前对象的容量(可以容纳的字符数量)。
     * 2:随机在sb中添加字符【a-z】【A-Z】50个。并打印输出  自定义方法实现。
     * 3:再定义一个StringBuffer对象 buffer ,打印当前buffer容量。
     * 将sb中的所有的大写字母全部移动至buffer 中,并打印sb中的剩余内容。和buffer 中的内容。
     * @param args
     */
    public static void main(String[] args) {
//      1:定义一个StringBuilder的对象sb。
        StringBuilder sb = new StringBuilder();
        System.out.println("sb的容量为:"+sb.capacity());//sb.length()

        //2:随机在sb中添加字符【a-z】【A-Z】50个。并打印输出  自定义方法实现。
        appendRandomChars1(sb);

        //再定义一个StringBuffer对象 buffer ,打印当前buffer容量。
        StringBuffer buffer = new StringBuffer();
        System.out.println("buffer的容量为:"+buffer.capacity());
        //asFDSa  i=3
        //将sb中的所有的大写字母全部移动至buffer 中,并打印sb中的剩余内容。和buffer 中的内容。
        for(int i=0;i<sb.length();i++){
            //将sb 中的字符挨个取出来,判断是否是大写
            char c = sb.charAt(i);
            if(c >= 'A' && c <='Z'){
                sb.deleteCharAt(i);
                buffer.append(c);
                //删除一个字符后,后续的字符全部前移了一位,那么必须让i做一次减一的操作,才能保证所有的字符都得到判断
                i--;
            }
        }
//      
        System.out.println("sb=="+sb);
        System.out.println("buffer="+buffer);

    }

    //
    public static void appendRandomChars1(StringBuilder sb){
        String s = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
        for (int i = 0; i <50; i++) {
            int index = MyUtil.getRandomNumberOfRange(0, 52);
            char c = s.charAt(index);
            sb.append(c);
        }
        //打印输出
        System.out.println("sb的容量:"+sb.capacity());
        System.out.println("sb的长度:"+sb.length());
        System.out.println(sb);
    }



    /**
     * 随机在sb中添加字符【a-z】【A-Z】50个。并打印输出  自定义方法实现。
     * 对StringBuilder对象随机添加字符
     */
    public static void appendRandomChars(StringBuilder sb){
        //产生50个字符
        for(int i=0;i<50;i++){
            //先随机确定产生 大写 或者小写
            int bigOrSmall = MyUtil.getRandomNumberOfRange(0, 2);
            if(bigOrSmall == 0){//大写区间
                //随机产生大写区间的某个字符并添加到sb的末尾
                char c = (char)MyUtil.getRandomNumberOfRange('A', 'Z'+1);
                sb.append(c);
            }else{//小写区间
                //随机产生小写区间的某个字符并添加到sb的末尾
                char c = (char)MyUtil.getRandomNumberOfRange('a', 'z'+1);
                sb.append(c);
            }
        }
        //打印输出
        System.out.println("sb的容量:"+sb.capacity());
        System.out.println("sb的长度:"+sb.length());
        System.out.println(sb);
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值