Java中的StringBuffer类

作者: Arvin Chen 分类: Java 来源: Break易站(www.breakyizhan.com)
  •   Java 字符串

    StringBufferString的一个对等类,它提供了字符串的许多功能。String表示固定长度,不可变的字符序列,而StringBuffer表示可长和可写的字符序列。

    StringBuffer可以在中间插入字符和子字符串,或者将字符和子字符串附加到结尾。它 会自动增长,为增加的空间腾出空间,并且通常会有比实际需要更多的字符预先分配,以留出增长空间。

    StringBuffer构造函数

    StringBuffer(): 它保留16个字符的空间而不用重新分配。

    StringBuffer s = new StringBuffer();

    StringBuffer(int size)它接受一个明确设置缓冲区大小的整数参数。

    StringBuffer s = new StringBuffer(20);

    StringBuffer(String str): 它接受一个String参数,该参数设置StringBuffer对象的初始内容并为不多于16个字符的空间保留空间而不需要重新分配。

    StringBuffer s = new StringBuffer(“GeeksforGeeks”);

    StringBuffer的方法

    一些最常用的方法是:

    • length()和capacity(): StringBuffer的长度可以通过length()方法找到,而总分配的容量可以通过capacity()方法找到。
    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("GeeksforGeeks");
            int p=s.length();
            int q=s.capacity();
            System.out.println("Length of string GeeksforGeeks="+p);
            System.out.println("Capacity of string GeeksforGeeks="+q);
        }
    }
    

    输出:

    Length of string GeeksforGeeks=13
    Capacity of string GeeksforGeeks=29
    • append(): 它用于在存在文本的末尾添加文本。这里有几种形式:
    StringBuffer append(String str)
    StringBuffer append(int num)

    代码  示例:

    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("Geeksfor");
            s.append("Geeks");
            System.out.println(s); //returns GeeksforGeeks
            s.append(1);
            System.out.println(s); //returns GeeksforGeeks1
        }
    }
    

    输出:

    GeeksforGeeks
    GeeksforGeeks1
    • insert(): 它用于在指定的索引位置插入文本。这些是它的一些形式:
    StringBuffer insert(int index, String str)
    StringBuffer insert(int index, char ch)

    在这里,index指定字符串将被插入到调用StringBuffer对象的位置的索引。

    代码示例:

    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("GeeksGeeks");
            s.insert(5, "for");
            System.out.println(s); // returns GeeksforGeeks
            
            s.insert(0, 5);
            System.out.println(s); // returns 5GeeksforGeeks
            
            s.insert(3, true);
            System.out.println(s); // returns 5GetrueeksforGeeks
            
            s.insert(5, 41.35d);
            System.out.println(s); // returns 5Getr41.35ueeksforGeeks
            
            s.insert(8, 41.35f);
            System.out.println(s); // returns 5Getr41.41.3535ueeksforGeeks
            
            char geeks_arr[] = { 'p', 'a', 'w', 'a', 'n' };
          
            // insert character array at offset 9
            s.insert(2, geeks_arr);
            System.out.println(s); // returns 5Gpawanetr41.41.3535ueeksforGeeks
        }
    }
    

    输出:

    GeeksforGeeks
    5GeeksforGeeks
    5GetrueeksforGeeks
    5Getr41.35ueeksforGeeks
    5Getr41.41.3535ueeksforGeeks
    5Gpawanetr41.41.3535ueeksforGeeks
    
    • reverse(): 它可以使用reverse()反转 StringBuffer对象中的字符此方法返回调用它的反转对象。 

    代码示例:

    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("GeeksGeeks");
            s.reverse();
            System.out.println(s); //returns skeeGrofskeeG
            }
    }
    

    输出:

    skeeGrofskeeG
    • delete()和deleteCharAt(): 它可以通过使用方法删除一个StringBuffer内的字符delete()deleteCharAt() .The delete()方法删除从调用对象的字符序列。在这里,start Index指定要删除的第一个字符的索引,end Index指定一个索引,超过要删除的最后一个字符。因此,从开始索引到endIndex-1运行删除的子字符串。返回结果的StringBuffer对象。所述   deleteCharAt()方法删除由指定的索引处的字符同上。它返回结果的StringBuffer对象。这些方法如下所示:
    StringBuffer delete(int startIndex,int endIndex)
    StringBuffer deleteCharAt(int loc)
    

    代码示例:

    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("GeeksforGeeks");
            s.delete(0,5);
            System.out.println(s); //returns forGeeks
            s.deleteCharAt(7);
            System.out.println(s); //returns forGeek
        }
    }
    

    输出:

    forGeeks
    forGeek
    
    • replace(): 它可以通过调用replace()来将一组字符替换为StringBuffer对象内的另一组字符。被替换的子字符串由索引start index和endIndex指定。因此,开始索引到endIndex-1的子串被替换。替换字符串在str中传递。所得到的StringBuffer对象被返回。它的签名如下所示:
    StringBuffer replace(int startIndex, int endIndex, String str)

    代码示例:

    import java.io.*;
    class GFG
    {
        public static void main (String[] args)
        {
            StringBuffer s=new StringBuffer("GeeksforGeeks");
            s.replace(5,8,"are");
            System.out.println(s); //returns GeeksareGeeks
        }
    }
    

    输出:

    GeeksareGeeks
    • ensureCapacity(): 它用于增加StringBuffer对象的容量。新容量将设定为我们指定的值或两倍当前容量加两(即容量+2),以较大者为准。这里容量指定了缓冲区的大小。
    void ensureCapacity(int capacity)

    除此之外,还可以使用在String类中使用的所有方法。

     一些有趣的事实:

    1. java.lang.StringBuffer扩展(或继承自Object)类。
    1. StringBuffer类的所有已实现接口:可序列化,可附加,CharSequence。
    1. public final class StringBuffer extends Object实现Serializable,CharSequence
    1. 字符串缓冲区对于多线程使用是安全的。这些方法可以在需要时进行同步,以便任何特定实例上的所有操作的行为就好像它们以某种连续顺序发生一样。
    1. 无论何时发生涉及源序列的操作(例如追加或从源序列中插入),该类只在执行操作的字符串缓冲区上同步,而不在源上同步。
    1. 它继承了Object类中的  clone,equals,finalize,getClass,hashCode,notify,notifyAll等一些方法。

     StringBuilder:  J2SE 5为Java已经强大的字符串处理功能添加了一个新的字符串类。这个新类被称为StringBuilder。它与StringBuffer相同,除了一个重要的区别:它不同步,这意味着它不是线程安全的。StringBuilder的优点是性能更快。但是,在您使用多线程的情况下,您必须使用StringBuffer而不是StringBuilder。

  •   Java 字符串
  •   本文标题:Java中的StringBuffer类 - Break易站
    转载请保留页面地址:https://www.breakyizhan.com/java/3936.html

    发表笔记

    电子邮件地址不会被公开。 必填项已用*标注

    更多阅读