StringBuffer,StringBuilder类的简单总结

StringBuffer

1 概述

  • 字符串缓冲区

  • 被final修饰不能被继承

  • 线程安全,可变的字符序列。

  • 字符串缓冲区可以安全地被多个线程使用。 这些方法在必要时进行同步,以便任何特定实例上的所有操作都按照与所涉及的各个线程所执行的方法调用顺序一致的顺序发生。

  • StringBuffer的主要StringBufferappendinsert方法,它们被重载以便接受任何类型的数据。 append方法总是在缓冲区的末尾添加这些字符; insert方法将insert添加到指定点。

2 构造方法

StringBuffer() 
构造一个没有字符的字符串缓冲区,初始容量为16个字符。  
StringBuffer(CharSequence seq) 
构造一个包含与指定的相同字符的字符串缓冲区 CharSequence 。  
StringBuffer(int capacity) 
构造一个没有字符的字符串缓冲区和指定的初始容量。  
StringBuffer(String str) 
构造一个初始化为指定字符串内容的字符串缓冲区。 

3 成员方法

int capacity() 返回当前容量。
int length() 返回长度(字符数)。
 容量:理论值
 长度:实际值

添加功能

StringBuffer append(String str)  添加到字符缓冲区的末尾  返回本身
有很多重载
StringBuffer insert(int dstOffset, String s) 在指定位置插入  返回本身
有很多重载

删除功能

StringBuffer delete(int start, int end)  删除从指定位置开始到指定位置结束的内容
StringBuffer deleteCharAt(int index) 删除指定索引的字符

替换

StringBuffer replace(int start, int end, String str)

反转

StringBuffer reverse()

截取功能

String substring(int start)
String substring(int start, int end)

4 String和StringBuffer之间的转换

package com.demo;
public class Demo {
    public static void main(String[] args) {
        //String---StringBuffer
        String s = "aaa";
        //方式一:构造方法
        StringBuffer sb = new StringBuffer(s);
        //方式二:append方法
        StringBuffer sb2 = new StringBuffer();
        sb2.append(s);
​
        //StringBuffer---String
        //方式一:toString
        StringBuffer sb3 = new StringBuffer(s);
        String ss = sb3.toString();
        //方式二:String(StringBuffer buffer) 
        String sss = new String(sb3);
    }
}

StringBuilder

概述

  • 被final修饰,无法被继承

  • 一个可变的字符序列

  • 不保证同步。此类设计用作简易替换为StringBuffer在正在使用由单个线程字符串缓冲区的地方

  • 主要的appendinsert方法 append方法始终在构建器的末尾添加这些字符; insert方法将insert添加到指定点。

构造方法与成员方法与StringBuffer差不多

String,StringBuffer ,StringBuilder的区别

  • String是final修饰的,不可变,每次操作都会产生新的String对象

  • StringBuffer和StringBuilder 都是在原对象上操作的

    • StringBuffer是线程安全的,StringBuilder是线程不安全的

    • StringBuffer方法都是synchronized修饰的

  • 性能 StringBuilder>StringBuffer>String

  • 使用场景:

    • 经常需要改变字符串内容时使用StringBuffer ,StringBuilder

    • 优先使用StringBuilder ,多线程使用共享变量时使用StringBuffer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值