Java学习笔记 --- StringBuffer类

一、基本介绍

1、java.lang.StringBuffer 代表可变的字符序列,可以对字符串内容进行增删

2、很多方法与 String 相同,但是 StringBuffer 是可变长度

3、StringBuffer 是一个容器

String VS StringBuffer

1、String 保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是更改地址,效率较低

2、StringBuffer 保存的是字符串常量,里面的值可以更改,每次 StringBuffer 的更新实际上可以更新内容,不用更新地址,效率较高     char[ ] value 存放在堆中

public class StringBuffer01 {
    public static void main(String[] args) {
        //1.StringBuffer 的直接父类是 AbstractStringBuffer
        //2.StringBuffer 实现了 Serializable 即StringBuffer的对象可以串行化
        //3.在父类中 AbstractStringBuffer 有属性 char[] value,不是 final
        //  该 value 数组存放字符串内容 存放在堆中的
        //4.StringBuffer 是一个 final 类,不能被继承
        //5.因为 StringBuffer 字符串是存放在 char[] value 中,所以在变化时(增加/删除)
        //  不用每次都更换地址(即不是每次都创建新的对象),所以效率高于 String
        StringBuffer stringBuffer = new StringBuffer();
    }
}

二、StringBuffer构造器

1、StringBuffer():构造一个其中不带字符的字符串缓冲区,其初始容量为16个字符

2、StringBuffer(CharSequence seq):构造一个字符串缓冲区,它包含与指定的 CharSequence 相同的字符

3、StringBuffer(int capacity):构造一个不带字符,但具有指定初始容量的字符串缓冲区,即对 char[ ] 大小进行指定

4、StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容

public class StringBuffer02 {
    public static void main(String[] args) {
        //构造器的使用
        //1.创建一个大小为16的 char[] 由于存放字符内容
        StringBuffer stringBuffer = new StringBuffer();

        //2.通构造器指定 char[] 大小
        StringBuffer stringBuffer1 = new StringBuffer(100);

        //3.通过给一个 String 创建一个 StringBuffer
        //  char[] 大小就是str.length() + 16
        StringBuffer hello = new StringBuffer("hello");

    }
}

三、String和StringBuffer相互转换

在开发中,我们经常需要将 String 和 StringBuffer 进行转换

public class StringAndStringBuffer {
    public static void main(String[] args) {
        //String -> StringBuffer
        String str = "hello";
        //方式1 使用构造器
        //返回的才是StringBuffer对象,对str本身没有任何影响
        StringBuffer stringBuffer = new StringBuffer(str);
        //方式2 使用append方法
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1 = stringBuffer1.append(str);

        //StringBuffer -> String
        StringBuffer zs = new StringBuffer("张三");
        //方式1 toString方法
        String s = zs.toString();
        //方式2 使用构造器
        String s1 = new String(zs);
    }
}

四、StringBuffer类常用方法

1、append:增

2、delete(start, end):删

3、replace(start, end, string):改  将start --- end 间的内容替换掉,不含end

4、indexOf:查 查找子串在字符串第一次出现的索引,如果找不到返回-1

5、insert:插

6、length:获取长度

public class StringBufferMethod {
    public static void main(String[] args) {
        StringBuffer s = new StringBuffer("hello");
        //增
        s.append(',');
        s.append("张三");
        s.append("李四").append(100).append(true).append(10.9);
        System.out.println(s);//hello,张三李四100true10.9

        //删
        //删除索引为 >=start && <end 处的字符
        //删除11-14的字符
        s.delete(11, 14);
        System.out.println(s);//hello,张三李四1rue10.9

        //改
        //使用 老六 替换 索引8 - 10的字符 8包含,10不包含 [8,10)
        s.replace(8, 10, "老六");
        System.out.println(s);//hello,张三老六1rue10.9

        //查找
        //查找指定的子串在字符串第一次出现的索引,如果找不到返回-1
        int indexOf = s.indexOf("老六");
        System.out.println(indexOf);//8

        //插
        //在索引为8的位置插入 李四,原来索引为8的内容自动后移
        s.insert(8, "李四");
        System.out.println(s);//hello,张三李四老六1rue10.9

        //长度
        System.out.println(s.length());//20
    }
}

五、入门练习

1.

2、输入商品名称和商品价格,要求价格的小数点前面每三位用逗号隔开,再输出

import java.util.Scanner;

public class StringBufferExercise {
    public static void main(String[] args) {
        //输入商品名称和商品价格,要求价格的小数点前面每三位用逗号隔开,再输出
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入商品名:");
        String name = scanner.next();
        System.out.print("请输入商品价格:");
        String money = scanner.next();
        StringBuffer s = new StringBuffer(money);
        //找到小数点的索引,然后在该位置的前3位插入,即可
        for (int i = s.lastIndexOf(".") - 3; i > 0 ; i -= 3) {
            s = s.insert(i, ",");
        }
        System.out.println("商品名\t商品价格\n" + name + "\t\t" + s);
    }
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值