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的容量到真实内容大小;

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 匹配中文的正则表达式_正则表达式和正规式

    匹配中文的正则表达式_正则表达式和正规式原文链接:http://caibaojian.com/zhongwen-regexp.html这篇文章主要讲如何使用正则匹配中文字符,中文正则表达式的匹配规则不像其他正则规则一样容易记住,下面一起看看这个中文正则表达式是怎么样的。\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下匹配中文字符的正则表达式:[\u4e00-\u9fa5]或许你也需要匹配双字节字符,中文也是双…

    2022年10月27日
    0
  • SAP IDES、DEV、QAS、PRD都是什么含义「建议收藏」

    SAP IDES、DEV、QAS、PRD都是什么含义「建议收藏」1SAPIDES、DEV、QAS、PRD都是什么含义? 2SAP实施方法分几步? 答: 1SAP系统的IDES、DEV、QAS、PRD分别是其演示练习、开发、质量保证、生产系统。其中: IDES:InternetDemonstrationandEvaluationSystem,交互式演示与评估系统 DEV:DevelopmentSystem,开发系统

    2022年6月28日
    56
  • vue封装jquery修改自身以及兄弟元素的方法「建议收藏」

    vue封装jquery修改自身以及兄弟元素的方法「建议收藏」在项目中我们经常有,点击某一个元素让其自身样式发生变化,同时其兄弟元素改变的需求,最简单的就是通过Jquery来操作,但是如果需求多的话,那么我们就可以对这个方法进行封装,然后再引入使用。今天我们就来看看这个封装…目录一.引入Jquery1.下载jquery源码:2.NPM安装二.封装三.引用1.单文件应用2.全局引用四.结尾一.引入Jquery1.下载jquery源码:我们在网页中打开https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js,复制代码粘贴

    2022年10月15日
    0
  • 大数据与云计算物联网的关系文献_云计算的概念

    大数据与云计算物联网的关系文献_云计算的概念云计算、大数据和物联网代表了IT领域最新的技术发展趋势,三者既有区别又有联系。云计算最初主要包含了两类含义:一类是以谷歌的GFS和MapReduce为代表的大规模分布式并行计算技术;另一类是以亚马逊的虚拟机和对象存储为代表的“按需租用”的商业模式。但是,随着大数据概念的提出,云计算中的分布式计算技术开始更多地被列入大数据技术,而人们提到云计算时,更多指的是底层基础IT资源的整合优化…

    2022年10月7日
    0
  • 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

    红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…各位读者,知识无穷而人力有穷,所以,要么改需求,要么找专业人士,要么自己研究。大家可以点赞、收藏、关注、评论我啦、需要完整文件随时联系我或交流哟~!

    2022年4月26日
    96
  • python运行不了怎么办_python nameerror

    python运行不了怎么办_python nameerrorpython将自己写的模块上传到PyPI服务器,报错error:<urlopenerror[SSL:CERTIFICATE_VERIFY_FAILED]certificatever

    2022年7月29日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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