Java StringBuffer z przykładami metod

StringBuffer w Javie jest bezpieczną dla wątków, zmienną sekwencją znaków, dzięki czemu za pomocą klasy StringBuffer można tworzyć modyfikowane Obiekty łańcuchowe.

w łańcuchu post w Javie widzieliśmy już, że obiekty String są niezmienne, tzn. ciągi są stałe; ich wartości nie można zmienić po ich utworzeniu. Z powodu tej właściwości niezmienności, gdy używasz metody modyfikacji ciągów znaków, takiej jak concatenation, tak naprawdę dzieje się tak, że tworzony jest i zwracany nowy ciąg znaków zawierający wynik operacji. Może to prowadzić do powstania wielu pośrednich obiektów łańcuchowych, jeśli String jest modyfikowany kilka razy, co z kolei oznacza więcej pamięci dla tych pośrednich obiektów.

używając obiektu StringBuffer można uniknąć tego problemu tworzenia kilku obiektów, ponieważ jest on zmienny. Nic dziwnego, że głównymi operacjami na buforze StringBuffer są metody dołączania i wstawiania.

spis treści
  1. ważne punkty na temat Java StringBuffer
  2. Java StringBuffer Constructors
  3. przykłady metod Java StringBuffer

ważne punkty na temat Java StringBuffer

Klasa StringBuffer.

  1. StringBuffer w Javie zapewnia dużą część funkcjonalności klasy String z jednym wyraźnym odchyleniem, że StringBuffer jest zmienny.
  2. StringBuffer jest również bezpieczny dla wątków, więc obiekt StringBuffer może być bezpiecznie używany przez wiele wątków. Metody klasy StringBuffer są synchronizowane w razie potrzeby.
  3. każdy StringBuffer jest tworzony z pojemnością. Dopóki długość sekwencji znaków zawartych w buforze łańcuchowym nie przekracza pojemności, nie jest konieczne przydzielanie nowej wewnętrznej tablicy buforów. Jeśli wewnętrzny bufor się przepełni, zostanie automatycznie powiększony.
  4. dostarczana jest również Klasa StringBuilder Java 5, która jest równoważna klasie StringBuffer, ale zaprojektowana do użycia przez pojedynczy wątek. StringBuilder jest szybszy, ponieważ nie wykonuje synchronizacji.

Java StringBuffer Constructors

w klasie StringBuffer są cztery konstruktory.

  1. StringBuffer()– tworzy bufor Łańcuchowy bez żadnych znaków i o początkowej pojemności 16 znaków.
    StringBuffer sb = new StringBuffer();
  2. StringBuffer(int capacity)– konstruuje bufor Łańcuchowy bez znaków i o określonej pojemności początkowej.
    StringBuffer sb = new StringBuffer(30);
  3. StringBuffer(charsequence seq)– konstruuje bufor Łańcuchowy, który zawiera takie same znaki jak określona sekwencja znaków.
    tutaj CharSequence jest interfejsem zaimplementowanym przez CharBuffer, Segment, String, StringBuffer, StringBuilder.
  4. StringBuffer(String str)– konstruuje bufor Łańcuchowy zainicjalizowany do zawartości podanego łańcucha.
    StringBuffer sb = new StringBuffer("Hello");

przykłady metody Java StringBuffer

metoda append

metoda append jest przeciążona tak, aby akceptować dane dowolnego typu. Metoda ta doda łańcuchową reprezentację danego typu danych do istniejącego bufora. Metoda append zawsze dodaje te znaki na końcu bufora.

public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.append(" "); sb.append("World").append(" ").append(123); System.out.println("Appended String- " + sb.toString()); }}

Wyjście

Appended String- Hello World 123

jak widać na przykładzie append jest używane z łańcuchem jako argumentem, a także int jako argumentem, ponieważ jest przeciążone dla tych typów danych. Możesz również użyć metody append w łańcuchu, tak jak to zostało zrobione w tej linii kodu –

sb.append("World").append(" ").append(123)

używając metody append możemy również sprawdzić, czy łańcuch jest niezmienny, gdzie jako StringBuffer jest zmienny. W przykładzie jest wytworzony obiekt StringBuffer, a następnie są do niego dołączane wartości, a zwrócona Referencja jest przechowywana w innym Stringbufferze.

tak samo jak łańcuch jest tworzony i dołączane do niego wartości, zwracany łańcuch jest również odwoływany przez inny łańcuch.

sprawdzając równość dwóch odwołań do StringBuffer możesz zobaczyć, że oba są takie same, podczas gdy dla String oba są różne.

public class StringLiteral {public static void main(String args) {// With StringBufferSystem.out.println("StringBuffer...");StringBuffer sb = new StringBuffer("Hello");sb.append(" ");StringBuffer newsb = sb.append("World").append(" ").append(123);if (sb == newsb) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}// With StringSystem.out.println("String...");String str = "Hello";String newstr = str.concat(" ").concat("World").concat(" ").concat("123");if (str == newstr) {System.out.println("Reference is same");}else {System.out.println("Reference is different");}}}

Wyjście

StringBuffer...Reference is sameString...Reference is different

metoda insert

metoda insert jest przeciążona tak, aby akceptować dane dowolnego typu. Metoda ta służy do wstawienia reprezentacji string danego typu danych do istniejącego bufora. Metoda insert dodaje znaki w określonym punkcie.

metoda insert pobiera dwa argumenty pierwsza liczba całkowita wskazująca pozycję, w której znaki mają być wstawione do bufora, a drugi argument to tekst, który ma być wstawiony.

public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Knp"); sb.insert(3, "Code"); System.out.println("String after insert- " + sb); }}

Wyjście

String after insert- KnpCode

metody długości i pojemności

capacity()– zwraca bieżącą pojemność bufora Stringbuffera.

length()– zwraca ilość znaków w tej sekwencji.

public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer(30); sb.append("Hello"); System.out.println("Capacity of StringBuffer- " + sb.capacity()); System.out.println("Length of StringBuffer- " + sb.length()); }}

Wyjście

Capacity of StringBuffer- 30Length of StringBuffer- 5

Jak widać StringBuffer jest tworzony z pojemnością jako 30, więc pojemność jest wyświetlana jako 30, gdzie jako liczba znaków w buforze wynosi 5, więc długość jest wyświetlana jako 5.

metody delete i deleteCharAt

  • delete(int start, int end)– usuwa znaki w podłańcuchu tej sekwencji. start, który wskazuje, że indeks początkowy jest włącznie, gdzie jako koniec, który wskazuje, że indeks końcowy jest wyłączny.
  • deleteCharAt(int index)– usuwa znak na podanej pozycji w tej sekwencji.
public class StringLiteral { public static void main(String args) { StringBuffer sb = new StringBuffer("Hello"); sb.delete(1, 4); System.out.println("After deletion- " + sb); System.out.println("Length of StringBuffer- " + sb.length()); }}

Wyjście

After deletion- HoLength of StringBuffer- 2
public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.deleteCharAt(4);System.out.println("After deletion- " + sb);System.out.println("Length of StringBuffer- " + sb.length());}}

Wyjście

After deletion- HellLength of StringBuffer- 4

Java StringBuffer reverse method

reverse()– odwraca istniejący bufor StringBuffer.

public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");System.out.println("Reversed- " + sb.reverse());}}

Wyjście

Reversed- olleH

Java StringBuffer replace metoda

replace(int start, int end, String str)– Zastępuje znaki w podłańcuchu tej sekwencji (od początku do końca-1) znakami w podanym łańcuchu.

public class StringLiteral {public static void main(String args) {StringBuffer sb = new StringBuffer("Hello");sb.replace(3, 5, "ena");System.out.println("String- " + sb);}}

Wyjście

String- Helena
  • Java StringBuilder z przykładami metod
  • dlaczego String jest niezmienny w Javie
  • jest Bezpieczny wątek Java String
  • Java String intern() metoda
  • Java String split() metoda
  • zwarte ciągi w Javie 9
  • znajdź Długość łańcucha bez użycia metody length() w Javie
  • przekonwertuj znak na łańcuch i ciąg na znak w Javie

to wszystko dla tematu Java StringBuffer z przykładami metod. Jeśli czegoś brakuje lub masz coś do podzielenia się na ten temat, napisz komentarz.

Możesz również polubić

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.