java StringBuffer

  • StringBuffer的直接父类是 AbstractStringBuilder
  • StringBuffer实现Serializable,即StringBuffer的对象可以串行化
  • 在父类中AbstractStringBuilder有属性byte[] value
  • 该value数组存放字符串内容,没有使用final修饰,因此是存放在堆中的,而不是常量池
  • StringBuffer 是一个final类,不能被继承

String 和 StringBuffer比较

  • String保存的是字符串常量,里面的值不能更改,每次String类的更新实际上就是修改地址,效率较低. private final byte[] value;
  • StringBuffer保存的是字符串变量,里面的值可以更改 byte[] value

String和StringBuffer相互转换

public class StringBuffer01 {
    public static void main(String[] args) {
        // String => StringBuffer
        String s = "hello";
        
        // 方式1
        StringBuffer stringBuffer = new StringBuffer(s);
        // 方式2
        StringBuffer stringBuffer1 = new StringBuffer();
        stringBuffer1.append(s);
        
        // StringBuffer => String
        //方式1:
        String str = stringBuffer.toString();
        String str1 = new String(stringBuffer);
    }
}

StringBuffer常用方法

public class StringBuffer02 {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer();
        // 添加
        stringBuffer.append("java");
        stringBuffer.append(",");
        stringBuffer.append("python");
        // java,python
        System.out.println(stringBuffer);

        // 删除
        stringBuffer.delete(1,3);
        // ja,python
        System.out.println(stringBuffer);

        // 修改
        stringBuffer.replace(2,4,"ll");
        // jallython
        System.out.println(stringBuffer);

        // 查找指定子串第一次出现的索引
        int indexOf = stringBuffer.indexOf("al");
        // 1
        System.out.println(indexOf);

        // 插入
        stringBuffer.insert(2,"va");
        // javallython
        System.out.println(stringBuffer);

        // 获取长度
        // 11
        System.out.println(stringBuffer.length());
    }
}

练习

public class StringBuffer03 {
    public static void main(String[] args) {
        String str = null;
        StringBuffer stringBuffer = new StringBuffer();
        stringBuffer.append(str);
        // 4
        System.out.println(stringBuffer.length());

        // null
        System.out.println(stringBuffer);

        StringBuffer stringBuffer1 = new StringBuffer(str);

        // NullPointerException
        System.out.println(stringBuffer1);
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值