StringBuilder详解「建议收藏」

StringBuilder详解「建议收藏」1、简介StringBuilder和StringBuffer一样,都是继承自抽象类AbstractStringBuilder类,也是一个可变的字符序列。StringBuilder和StringBuffer非常相似,甚至有互相兼容的API,不过,StringBuilder不是线程安全的,这是和StringBuffer的主要区别。StringBuilder的层次结构如下:StringB

大家好,又见面了,我是你们的朋友全栈君。

1、简介

StringBuilder和StringBuffer一样,都是继承自抽象类AbstractStringBuilder类,也是一个可变的字符序列。StringBuilder和StringBuffer非常相似,甚至有互相兼容的API,不过,StringBuilder不是线程安全的,这是和StringBuffer的主要区别。StringBuilder的层次结构如下:
StringBuilder详解「建议收藏」

StringBuilder类被设计成在不需要多线程安全的情况下替换StringBuffer类的。如果程序中不需要多线程安全,推荐使用StringBuilder类,因为没有了同步的操作而速度上比较快。

StringBuilder和StringBuffer一样,主要的操作有append和insert等。

2、StringBuilder原理

StringBuilder的原理和StringBuffer一样,不同之处在于StringBuilder不需要考虑线程安全。具体的原理参见另一篇StringBuffer详解

3、常用方法

StringBuilder的常用方法和StringBuffer的一样。列出如下:

(1)构造函数

StringBuilder有四个构造函数:

  • StringBuilder() value内容为空,并设置容量为16个字节;
  • StringBuilder(CharSequece seq)  使用seq初始化,容量在此基础上加16;
  • StringBuilder(int capacity) 设置特定容量;
  • StringBuilder(String str)  使用str初始化,容量str大小的基础上加16;

(2)append方法

由于继承了Appendable接口,所以要实现append方法,StringBuilder类对几乎所有的基本类型都重载了append方法:

  • append(boolean b)
  • append(char c)
  • append(char[] str)
  • append(char[] str,int offset,int len)
  • append(CharSequence s)
  • append(CharSequence s,int start,int end)
  • append(double d)
  • append(float f)
  • append(int i)
  • append(long lng)
  • append(Object obj)
  • append(String str)
  • append(StringBuffer sb)

(3)insert方法

insert方法可以控制插入的起始位置,也几乎对所有的基本类型都重载了insert方法:

  • insert(int offser,boolean b)
  • insert(int offset,char c)
  • insert(int offset,char[] str)
  • insert(int index,char[] str,int offset,int len)
  • insert(int dsfOffset,CharSequence s)
  • insert(int dsfOffset,CharSequence s,int start,int end)
  • insert(int offset,double d)
  • insert(int offset,float f)
  • insert(int offset,int i)
  • insert(int offset,long l)
  • insert(int offset,Object obj)
  • insert(int offset,String str)

(4)其它会改变内容的方法

上面的那些方法会增加StringBuilder的内容,还有一些方法可以改变StringBuilder的内容:

  • StringBuilder delete(int start,int end) 删除从start到end(不包含)之间的内容;
  • StringBuilder deleteCharAt(int index) 删除index位置的字符;
  • StringBuilder replace(int start,int end,String str) 用str中的字符替换value中从start到end位置的子序列;
  • StringBuilder reverse() 反转;
  • void setCharAt(int index,char ch) 使用ch替换位置index处的字符;
  • void setLength(int newLength) 可能会改变内容(添加’\0’);

(5)其它常用方法

下面这些方法不会改变内容:

  • int capacity() 返回value的大小即容量;
  • int length() 返回内容的大小,即count;
  • char charAt(int index) 返回位置index处的字符;
  • void ensureCapacity(int minimumCapacity) 确保容量至少是minimumCapacity;
  • void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) 返回srcBegin到srcEnd的字符到dst;
  • int indexOf(String str) 返回str第一次出现的位置;
  • int indexOf(String str,int fromIndex) 返回从fromIndex开始str第一次出现的位置;
  • int lastIndexOf(String str) 返回str最后出现的位置;
  • int lastIndexOf(String str,int fromIndex) 返回从fromIndex开始最后一次出现str的位置;
  • CharSequence subSequence(int start,int end) 返回字符子序列;
  • String substring(int start) 返回子串;
  • String substring(int start,int end) 返回子串;
  • String toString() 返回value形成的字符串;
  • void trimToSize() 缩小value的容量到真实内容大小;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153415.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 分离字符串中的字母和数字并使得字母在前数组在后

    分离字符串中的字母和数字并使得字母在前数组在后大搜车校招编程题:分离字符串中的字母和数字并使得字母在前数组在后public class 校招 { static String stringCharFrontNumEnd(String string){ if(string==null ||string.length()==0) return null; String c…

  • 查询mysql的隔离级别_怎么查看数据库隔离级别

    查询mysql的隔离级别_怎么查看数据库隔离级别CPUQuota=value该参数表示服务可以获取的最大CPU时间,value为百分数形式,高于100%表示可使用1核以上的CPU。与cgroupcpu控制器cpu.cfs_quota_us配置项对应。MemoryLimit=value该参数表示服务可以使用的最大内存量,value可以使用K,M,G,T等后缀表示值的大小。与cgroupmemory控制器…

  • activation code2020激活码【在线破解激活】

    activation code2020激活码【在线破解激活】,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • flash的代码大全_flash脚本语言

    flash的代码大全_flash脚本语言外部调用swfon(release){loadMovieNum(‘service.swf’,1);}外部调用数据loadVariablesNum(‘about.txt’,0);Sy

  • 漫画什么是分布式事务_分布式事务框架

    漫画什么是分布式事务_分布式事务框架点击上方“程序员小灰”,选择“置顶公众号”有趣有内涵的文章第一时间送达!————— 第二天 —————————————————假如没有分布式事务在一系列微服务系统当中,假如不存在分布式事务,会发生什么呢?让我们以互联网中常用的交易业务为例子:上图中包含了库存和订单两个独立的微服务,每个微服务维护了自己的数据库。在交易系统的业务逻辑中,一个商品在下单之前需要先调用库存服务,进行扣除库存,再调用订

    2022年10月23日
  • 全息投影技术的实现_自制全息投影视频素材

    全息投影技术的实现_自制全息投影视频素材今天自己亲自动手制作了一个全息投影仪,智能手机早就具备投射出全息影像的潜质,现在Mrwhosetheboss就将这段教程上传到网上,看起来简直酷极了。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号