Java中StringBuilder类的用法解析-天天速看料

2023-05-06 06:07:58 来源:脚本之家
目录
一、StringBuilder说明二、StringBuilder特点三、StringBuilder常用方法

一、StringBuilder说明

StringBuilder是一个可变的字符序列。这个类提供了一个与StringBuffer兼容的API,但不保证同步,即StringBuilder不是线程安全的,而StringBuffer是线程安全的。显然,StringBuilder要运行的更快一点。

这个类被设计为在字符串缓冲区所在的地方作为StringBuffer的临时替代品使用由单个线程使用(通常是这样)。在可能的情况下,建议优先使用该类而不是StringBuffer,因为在大多数实现中它会更快。


(相关资料图)

二、StringBuilder特点

(1)该类继承了AbstractStringBuilder,实现了java.io.Serializable和CharSequence。

(2)是一个字符串缓冲器,可以理解为一个容器。

(3)可以存储多种类型的数据,但是最终会通过String.valueof()方法将其转换为String类型再存入StringBuilder。

(4)在其无参构造中,初始化长度为16,在有参构造中可以根据业务场景来自定义其长度,尽可能的去自定义长度,减少扩容的资源消耗。

(5)它是一个线程不安全的,但是速度上有:StringBuilder(可变,线程不安全) > StringBuffer(可变,线程安全) > String(不可变,安全) 。

(6)具有天然的增删改查方法如append(),insert(),deletecharAt(),delete(),reverse(),replace()等。

(7)通过toString()方法可以将其转换为一个String类型,该方法返回的是一个String类型的字符串副本。

三、StringBuilder常用方法

(1)无参构造函数

public StringBuilder() {
        super(16); // 调用父类的构造方法,并默认初始化长度为16
}

其中super(16)表示:

AbstractStringBuilder(int capacity) {
    value = new char[capacity]; // 初始化一个长度为16的char型可变数组
}

(2)有参构造(两种)

public StringBuilder(String str) {
        super(str.length() + 16); // 通常调用父类的构造方法,但参数为传入字符串的长度+16
        append(str); // 将入参str添加到stringbuilder中
    }

public StringBuilder(CharSequence seq) { // CharSequence 是一个描述字符串结构的接口,在这个接口里一共有三个常用的子类:String,StringBuffer,StringBuilder
        this(seq.length() + 16);
        append(seq);
    }

(3)添加方法

public StringBuilder append(StringBuffer sb) {
        super.append(sb);
        return this;
    }

@Override
public StringBuilder append(CharSequence s) {
        super.append(s);
        return this;
    }
   
@Override
public StringBuilder append(CharSequence s, int start, int end) {
        super.append(s, start, end);
        return this;
    }

@Override
public StringBuilder append(char[] str) {
        super.append(str);
        return this;
    }


@Override
public StringBuilder append(char[] str, int offset, int len) {
        super.append(str, offset, len);
        return this;
    }

@Override
public StringBuilder append(boolean b) { // 这里的入参还可以替换为char,int,float,long,double
        super.append(b);
        return this;
    }

(4)删除方法

@Override
public StringBuilder delete(int start, int end) {
        super.delete(start, end); // 删除[start, end)区间内的字符串
        return this;
    }

@Override
public StringBuilder deleteCharAt(int index) { // 删除指定索引位置的字符串
        super.deleteCharAt(index);
        return this;
    }

(5)插入(修改)方法

@Override
public StringBuilder insert(int index, char[] str, int offset, int len){
        super.insert(index, str, offset, len);
        return this;
    }

    
@Override
public StringBuilder insert(int offset, Object obj) {
        super.insert(offset, obj);
        return this;
    }

  
@Override
public StringBuilder insert(int offset, String str) {
        super.insert(offset, str);
        return this;
    }

@Override
public StringBuilder insert(int offset, char[] str) {
        super.insert(offset, str);
        return this;
    }


@Override
public StringBuilder insert(int dstOffset, CharSequence s) {
        super.insert(dstOffset, s);
        return this;
    }

@Override
public StringBuilder insert(int dstOffset, CharSequence s, int start, int end){
        super.insert(dstOffset, s, start, end);
        return this;
    }


@Override
public StringBuilder insert(int offset, boolean b) { // 这里的第二个入参还可以替换为char,int,float,long,double
        super.insert(offset, b);
        return this;
    }
    
@Override
public StringBuilder replace(int start, int end, String str) { // 替换方法
    super.replace(start, end, str);
    return this;
}

(6)查询方法(类似于String中的查询从某个索引位置0/fromIndex开始字符串str第一次/最后一次出现的索引位置的方法)

@Override
public int indexOf(String str) {
        return super.indexOf(str);
    }

@Override
public int indexOf(String str, int fromIndex) {
        return super.indexOf(str, fromIndex);
    }

@Override
public int lastIndexOf(String str) {
        return super.lastIndexOf(str);
    }

@Override
public int lastIndexOf(String str, int fromIndex) {
        return super.lastIndexOf(str, fromIndex);
    }

(7)反转StringBuilder

@Override
public StringBuilder reverse() {
        super.reverse();
        return this;
    }

(8)toString()方法

@Override
public String toString() {
        // Create a copy, don"t share the array
        return new String(value, 0, count); // 返回了一个新的String类型的字符串
    }

到此这篇关于Java中StringBuilder类的用法解析的文章就介绍到这了,更多相关Java StringBuilder类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

标签:

Java中StringBuilder类的用法解析-天天速看料

StringBuilder是一个可变的字符序列,这个类提供了一个与StringBuffer兼容的API。本文主要为大家介绍了Stri

2023-05-06 06:07:58

四川首家炎症性肠病关爱中心投入使用

5月5日记者从成都市第五人民医院获悉,由中国红十字基金会发起的常相伴炎症性肠病关爱中心在四川省成都市第

2023-05-06 04:54:18

5月5日基金净值:红土科技创新3年封闭混合最新净值1.4492,跌1.47% 讯息

5月5日,红土科技创新3年封闭混合最新单位净值为1 4492元,累计净值为1 4492元,较前一交易日下跌1 47%。历

2023-05-06 02:40:25

扣缴个人所得税怎么做会计分录_个人所得税怎么做会计分录_世界视讯

1、企业在计提员工个人所得税时会计分录:  1 计提工资  借:管理费用 财务费用 生产成本等贷:应付职

2023-05-06 00:44:58

讯息:深圳香格里拉大酒店_关于深圳香格里拉大酒店的介绍

1、深圳香格里拉大酒店是一家集住宿、餐饮、商务、会议、旅游等服务为一体的五星级大酒店。2、酒店拥有装修

2023-05-05 22:49:10

意甲冠军榜:那不勒斯拿下队史第3冠,尤文36冠居首|全球报资讯

意甲第33轮,那不勒斯1-1战平乌迪内斯,提前5轮夺得本赛季意甲冠军,这也是他们队史第3座意甲冠军。在意甲

2023-05-05 21:56:49

环球热推荐:喜报!东营公安分局一集体荣获山东省公安厅表彰

大众网记者李彦涵通讯员袁波东营报道以奋斗姿态激扬青春,更加英姿勃发;在拼搏青春中履行使命,愈发光彩夺

2023-05-05 21:00:44

群众度假平安祥和!漯河市源汇区消防“五一”护航精准施策-全球动态

“五一”劳动节期间,漯河市源汇区消防救援大队结合“五一”期间辖区人流量特点和火灾形势,精准施策、...

2023-05-05 20:12:34

曹妃甸区应急管理局_对于曹妃甸区应急管理局简单介绍

1、曹妃甸区应急管理局是曹妃甸区的政府工作部门。文章到此就分享结束,希望对大家有所帮助。

2023-05-05 20:03:28

今日精选:2023南通海门区土地征收成片开发方案(2023南通海门区土地征收成片开发方案公布)

此次征收方案主要涉及海门区海门街道、滨江街道、三厂街道、三星镇、包场镇、常乐镇,共包含14个片区。

2023-05-05 19:17:49
x 广告
x 广告

Copyright ©  2015-2022 华中经营网版权所有  备案号:京ICP备12018864号-26   联系邮箱:2 913 236 @qq.com