• java StringBuilder类、StringBuffer类


    1、StringBuilder

    类型概述

    String类是不可变类,即一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。每次使用String的方法时,就需要为该新对象分配新的空间。在需要对字符串执行重复修改的情况下,与创建新的String对象相关的系统开销可能会非常昂贵。如果要修改字符串而不创建新的对象,则可以使用StringBuilder类。

    构造方法

    StringBuilder()
    
    • 1

    构造一个没有任何字符的StringBuilder,初始容量只有16个字符。

    StringBuilder(CharSequence seq)
    
    • 1

    根据指定的CharSequence对象构造一个StringBuilder对象,它们的字符相同。

    StringBuilder(int capacity)
    
    • 1

    构造一个指定容量但没有任何字符的StringBuiler对象。

    StringBuilder(String str)
    
    • 1

    根据一个字符串构造一个StringBuilder对象。

    对象方法

    1、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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

    2、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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

    StringBuilder delete(int start,int end) 
    
    • 1

    删除从start到end(不包含)之间的内容;

    StringBuilder deleteCharAt(int index) 
    
    • 1

    删除index位置的字符;

    StringBuilder replace(int start,int end,String str) 
    
    • 1

    用str中的字符替换value中从start到end位置的子序列;

    StringBuilder reverse() 
    
    • 1

    反转;

    void setCharAt(int index,char ch)
    
    • 1

    使用ch替换位置index处的字符;

    void setLength(int newLength) 
    
    • 1

    可能会改变内容(添加’\0’);

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

    int capacity()
    
    • 1

    返回value的大小即容量;

    int length() 
    
    • 1

    返回内容的大小,即count;

    char charAt(int index) 
    
    • 1

    返回位置index处的字符;

    void ensureCapacity(int minimumCapacity) 
    
    • 1

    确保容量至少是minimumCapacity;

    void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin) 
    
    • 1

    返回srcBegin到srcEnd的字符到dst;

    int indexOf(String str) 
    
    • 1

    返回str第一次出现的位置;

    int indexOf(String str,int fromIndex) 
    
    • 1

    返回从fromIndex开始str第一次出现的位置;

    int lastIndexOf(String str) 
    
    • 1

    返回str最后出现的位置;

    int lastIndexOf(String str,int fromIndex) 
    
    • 1

    返回从fromIndex开始最后一次出现str的位置;

    CharSequence subSequence(int start,int end) 
    
    • 1

    返回字符子序列;

    String substring(int start) 
    
    • 1

    返回子串;

    String substring(int start,int end) 
    
    • 1

    返回子串;

    String toString() 
    
    • 1

    返回value形成的字符串;

    void trimToSize() 
    
    • 1

    缩小value的容量到真实内容大小;

    2、StringBuffer

    类型概述

    StringBuffer对象则代表一个字符序列可变的字符串,当一个StringBuffer被创建以后,通过StringBuffer提供的append()、insert()、reverse()、setCharAt()、setLength()等方法可以改变这个字符串对象的字符序列。一旦通过StringBuffer生成了最终想要的字符串,就可以调用它的toString()方法将其转换为一个String对象。

    构造方法

    StringBuffer()
    
    • 1

    构造一个没有任何字符的StringBuffer,初始容量只有16个字符。

    StringBuffer(CharSequence seq)
    
    • 1

    根据指定的CharSequence对象构造一个StringBuffer对象,它们的字符相同。

    StringBuffer(int capacity)
    
    • 1

    构造一个指定容量但没有任何字符的StringBuffer对象。

    StringBuffer(String str)
    
    • 1

    根据一个字符串构造一个StringBuffer对象。

    对象方法

    与StringBuilder方法相同。

    String、StringBuilder与StringBuffer区别

    String 是不可变的对象, 因此在每次对 String 类型进行改变的时候,都会生成一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,性能就会降低。

    StringBuilder是一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。

    StringBuiffer也代表可变字符串对象。实际上,StringBuilder和StringBuffer基本相似,两个类的构造器和方法也基本相同。不同的是:StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高。

  • 相关阅读:
    java计算机毕业设计智慧机场管理系统源程序+mysql+系统+lw文档+远程调试
    容斥原理 能被整除的数
    学习 Rust 的第十一天:如何使用模块
    电脑系统重装后音频驱动程序怎么修复
    建模杂谈系列157 关于“如何降低工作成本“的思考
    国际工程承包与管理、名词解释
    G1D19-DP&CS KE&AttacKG复现
    java实现微信小程序获取手机号(htts接口实现)
    云数融合与大数据技术在日常生活中的创新应用探索
    构建系列之前端脚手架vite
  • 原文地址:https://blog.csdn.net/weixin_49346755/article/details/125900814