Рубрики

Класс StringBuffer в Java

Строковый класс в Java

StringBuffer является одноранговым классом String, который обеспечивает большую часть функциональности строк. 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); 

методы

Некоторые из наиболее используемых методов:

  • 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); // возвращает GeeksforGeeks

            s.append(1);

            System.out.println(s); // возвращает 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); // возвращает GeeksforGeeks

      

            s.insert(0, 5);

            System.out.println(s); // возвращает 5GeeksforGeeks

      

            s.insert(3, true);

            System.out.println(s); // возвращает 5GetrueeksforGeeks

      

            s.insert(5, 41.35d);

            System.out.println(s); // возвращает 5Getr41.35ueeksforGeeks

      

            s.insert(8, 41.35f);

            System.out.println(s); // возвращает 5Getr41.41.3535ueeksforGeeks

      

            char geeks_arr[] = { 'p', 'a', 'w', 'a', 'n' };

      

            // вставляем массив символов по смещению 9

            s.insert(2, geeks_arr);

            System.out.println(s); // возвращает 5Gpawanetr41.41.3535ueeksforGeeks

        }

    }

    Выход:

    GeeksforGeeks
    5GeeksforGeeks
    5GetrueeksforGeeks
    5Getr41.35ueeksforGeeks
    5Getr41.41.3535ueeksforGeeks
    5Gpawanetr41.41.3535ueeksforGeeks
    
  • reverse () : он может инвертировать символы в объекте StringBuffer с помощью reverse (). Этот метод возвращает обращенный объект, для которого он был вызван.  

    Пример кода:

    import java.io.*;

    class GFG {

        public static void main(String[] args)

        {

            StringBuffer s = new StringBuffer("GeeksGeeks");

            s.reverse();

            System.out.println(s); // возвращает skeeGrofskeeG

        }

    }

    Выход:

    skeeGskeeG
    
  • delete () и deleteCharAt () : он может удалять символы в StringBuffer с помощью методов delete () и deleteCharAt () . Метод delete () удаляет последовательность символов из вызывающего объекта. Здесь начальный индекс указывает индекс первого удаляемого символа, а конечный индекс указывает индекс после последнего удаляемого символа. Таким образом, удаленная подстрока выполняется от начального индекса до конечного индекса – 1. Результирующий объект StringBuffer возвращается. Метод deleteCharAt () удаляет символ по индексу, указанному в loc. Он возвращает результирующий объект 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); // возвращает forGeeks

            s.deleteCharAt(7);

            System.out.println(s); // возвращает forGeek

        }

    }

    Выход:

    forGeeks
    forGeek
    
  • replace () : он может заменить один набор символов другим набором внутри объекта StringBuffer, вызвав replace (). Заменяемая подстрока указывается индексами start Index и endIndex. Таким образом, подстрока в начале Index через 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); // возвращает GeeksareGeeks

        }

    }

    Выход:

    GeeksareGeeks
    
  • sureCapacity () : используется для увеличения емкости объекта StringBuffer. Новая емкость будет установлена либо на указанное нами значение, либо в два раза больше текущей емкости плюс два (т.е. емкость + 2), в зависимости от того, что больше. Здесь, емкость определяет размер буфера.
    void ensureCapacity(int capacity)

    Кроме того, все методы, которые используются в классе String, также могут быть использованы.

  • StringBuffer appendCodePoint (int codePoint) : этот метод добавляет строковое представление аргумента codePoint к этой последовательности.
    Синтаксис:
    public StringBuffer appendCodePoint(int codePoint)
    
  • char charAt (int index) : этот метод возвращает значение char в этой последовательности по указанному индексу.
    Синтаксис:
    public char charAt(int index)
    
  • IntStream chars () : этот метод возвращает поток значений int, расширяющих ноль, из этой последовательности.
    Синтаксис:
    public IntStream chars()
    
  • int codePointAt (int index) : этот метод возвращает символ (кодовая точка Unicode) по указанному индексу.
    Синтаксис:
    public int codePointAt(int index)
    
  • int codePointBefore (int index) : этот метод возвращает символ (кодовая точка Unicode) перед указанным индексом.
    Синтаксис:
    public int codePointBefore(int index)
    
  • int codePointCount (int beginIndex, int endIndex) : Этот метод возвращает количество кодовых точек Unicode в указанном текстовом диапазоне этой последовательности.
    Синтаксис:
    public int codePointCount(int beginIndex,
                              int endIndex)
    
  • IntStream codePoints () : этот метод возвращает поток значений кодовой точки из этой последовательности.
    Синтаксис:
    public IntStream codePoints()
    
  • void getChars (int srcBegin, int srcEnd, char [] dst, int dstBegin) : в этом методе символы копируются из этой последовательности в целевой массив символов dst.
    Синтаксис:
    public void getChars(int srcBegin,
                         int srcEnd,
                         char[] dst,
                         int dstBegin)
    
  • int indexOf (String str) : этот метод возвращает индекс в этой строке первого вхождения указанной подстроки.
    Синтаксис:
    public int indexOf(String str)
    
    public int indexOf(String str,
                       int fromIndex)
    
  • int lastIndexOf (String str) : этот метод возвращает индекс в этой строке последнего вхождения указанной подстроки.
    Синтаксис:
    public int lastIndexOf(String str)
    
    public int lastIndexOf(String str,
                           int fromIndex)
    
  • int offsetByCodePoints (int index, int codePointOffset) : этот метод возвращает индекс в этой последовательности, который смещен от данного индекса на кодовые точки codePointOffset.
    Синтаксис:
    public int offsetByCodePoints(int index,
                                  int codePointOffset) 
    
  • void setCharAt (int index, char ch) : в этом методе символ по указанному индексу устанавливается в ch.
    Синтаксис:
    public void setCharAt(int index,
                          char ch)
    
  • void setLength (int newLength) : Этот метод устанавливает длину последовательности символов.
    Синтаксис:
    public void setLength(int newLength)
    
  • CharSequence subSequence (int start, int end) : Этот метод возвращает новую последовательность символов, которая является подпоследовательностью этой последовательности.
    Синтаксис:
    public CharSequence subSequence(int start,
                                    int end)
    
  • String substring (int start) : этот метод возвращает новую строку, которая содержит подпоследовательность символов, в настоящее время содержащихся в этой последовательности символов.
    Синтаксис:
    public String substring(int start)
    
    public String substring(int start,
                            int end)
    
  • String toString () : этот метод возвращает строку, представляющую данные в этой последовательности.
    Синтаксис:
    public String toString()
    
  • void trimToSize () : этот метод пытается уменьшить объем памяти, используемой для последовательности символов.
    Синтаксис:
    public void trimToSize()
    

  Некоторые интересные факты:

  1. java.lang.StringBuffer расширяет (или наследует) класс объекта .
  1. Все реализованные интерфейсы класса StringBuffer: Serializable, Appendable, CharSequence.
  1. открытый финальный класс StringBuffer расширяет объект реализует Serializable, CharSequence, Appendable
  1. Строковые буферы безопасны для использования несколькими потоками. Методы могут быть синхронизированы везде, где это необходимо, так что все операции в любом конкретном экземпляре ведут себя так, как будто они происходят в некотором последовательном порядке.
  1. Всякий раз, когда происходит операция, связанная с исходной последовательностью (например, добавление или вставка из исходной последовательности), этот класс синхронизируется только в строковом буфере, выполняющем операцию, а не в источнике.
  1. Он наследует некоторые методы из класса Object, такие как clone, equals, finalize, getClass, hashCode, notify, notifyAll.

  StringBuilder: J2SE 5 добавляет новый класс строк к уже мощным возможностям Java по обработке строк. Этот новый класс называется StringBuilder. Он идентичен StringBuffer, за исключением одного важного различия: он не синхронизирован, что означает, что он не является поточно-ориентированным. Преимущество StringBuilder — более высокая производительность. Однако в тех случаях, когда вы используете многопоточность, вы должны использовать StringBuffer, а не StringBuilder.

Эта статья предоставлена Lokesh Todwal. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Класс StringBuffer в Java

0.00 (0%) 0 votes