栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

StringBuffer && StringBuilder

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

StringBuffer && StringBuilder

StringBuffer

String类型的值一旦给定就不可以在更改(底层数组是被final修饰的),StringBuffer就是一个字符串,并且线程安全(一次只允许一个线程进入操作,保证安全牺牲效率),值是可变的字符序列(底层数组没有被final修饰)。

在创建StringBuffer时如果没有使用有参构造方法初始化时,底层数组默认程度为16;如果使用有参构造, 一种是底层数组的长度是所给字符串长度+16;另一种是直接给定长度。

添加功能

public StringBuffer append(String 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 class StringBufferDemo {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("lkjh");//底层数组长度为20
        System.out.println(stringBuffer);
        System.out.println(stringBuffer.length());
        
        stringBuffer.append("po");//给stringBuffer末尾加上po;
        stringBuffer.insert(0,"ss");//向指定位置插入字符串;
        stringBuffer.deleteCharAt(5);//删除指定位置的字符
        stringBuffer.delete(6,8);//删除[6,8)区间的字符
        System.out.println(stringBuffer.substring(3));//返回3之后的字符串
        stringBuffer.replace(1, 3, "5555");//用指定字符串替换[1,3)位置上的字符串;
        stringBuffer.reverse();//返回字符串的逆序
        System.out.println(stringBuffer);
        System.out.println(stringBuffer.length());//返回的是count,表示底层数组实际使用的长度
    }
}
StringBuilder

与StringBuffer类似底层类似,但多线程,不安全(两个线程访问同一个资源时是不安全的)。

String,StringBuffer,StringBudiler的区别

相同点:底层都是数组。

String:底层数组 char[] 被final修饰,值不可变。改变值时,实际上是创建了一个新的对象

StringBuffer:线程安全的,底层数组 char[] 没有被final修饰,字符串可变

StringBudiler:线程不安全,底层数组 char[] 没有被final修饰,字符串可变

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/644946.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号