1. Zmiany linii

Łańcuchy w Javie są niezmiennymi obiektami. Zrobiono to, aby klasa string mogła być wysoce zoptymalizowana i używana wszędzie. Na przykład zaleca się używanie tylko niezmiennych typów jako kluczy dla kolekcji HashMap .

Jednak często zdarzają się sytuacje, w których dla programisty wygodniej byłoby mieć String-klasę, którą można zmienić. Który nie tworzy nowego podciągu za każdym razem, gdy wywoływana jest jego metoda.

Na przykład mamy bardzo duży ciąg znaków i często dodajemy coś na jego końcu. W takim przypadku nawet kolekcja znaków ( ArrayList<Character>) może być bardziej wydajna niż ciągłe odtwarzanie ciągów znaków i łączenie obiektów typu String.

Dlatego język Java nadal dodał typ String, który można zmienić. to się nazywa StringBuilder.

Utwórz obiekt

Aby utworzyć obiekt StringBuilderna podstawie istniejącego łańcucha, musisz uruchomić polecenie, takie jak:

StringBuilder Nazwa = new StringBuilder(string);

Aby utworzyć pusty zmienny łańcuch, musisz użyć polecenia takiego jak:

StringBuilder Nazwa = new StringBuilder();

Lista metod

Klasa StringBuilderma dwa tuziny przydatnych metod, oto najważniejsze z nich:

metoda Opis
StringBuilder append(obj)
Konwertuje podany obiekt na ciąg i dołącza do bieżącego ciągu
StringBuilder insert(int index, obj)
Konwertuje podany obiekt na ciąg i wstawia go do bieżącego ciągu
StringBuilder replace(int start, int end, String str)
Zastępuje część ciągu określoną przez interwał początek..koniec podanym ciągiem
StringBuilder deleteCharAt(int index)
Usuwa znak pod numerem indeksu z łańcucha
StringBuilder delete(int start, int end)
Usuwa z łańcucha znaki określone przez interwał
int indexOf(String str, int index)
Wyszukuje podłańcuch w bieżącym wierszu
int lastIndexOf(String str, int index)
Wyszukuje podłańcuch w bieżącym ciągu od końca
char charAt(int index)
Zwraca znak ciągu w jego indeksie
String substring(int start, int end)
Zwraca podłańcuch określony przez interwał
StringBuilder reverse()
Odwraca łańcuch do tyłu.
void setCharAt(int index, char)
Zmienia znak ciągu podanego przez indeks na podany
int length()
Zwraca długość łańcucha w znakach

Oto krótki opis każdej metody


2. Krótki opis metod

Dodawanie do linii

Aby dodać coś do zmiennego łańcucha ( StringBuilder), musisz użyć metody append(). Przykład:

Kod Opis
StringBuilder builder = new StringBuilder("Hi");
builder.append("Bye");
builder.append(123);
Hi
HiBye
HiBye123

Konwertuj na standardowy ciąg

Aby przekonwertować obiekt StringBuilderna łańcuch typu String, wystarczy wywołać jego toString(). Przykład

Kod Wyjście na wyświetlaczu
StringBuilder builder = new StringBuilder("Hi");
builder.append(123);
String result = builder.toString();
System.out.println(result);
Hi123

Jak usunąć postać?

Aby usunąć znak ze zmiennego łańcucha, musisz użyć metody deleteCharAt(). Przykład:

Kod Wyjście na wyświetlaczu
StringBuilder builder = new StringBuilder("Hello");
builder.deleteCharAt(2);
String result = builder.toString();
System.out.println(result);
Helo

Jak zamienić część łańcucha na inną?

Jest na to metoda replace(int begin, int end, String str). Przykład:

Kod Wyjście na wyświetlaczu
StringBuilder builder = new StringBuilder("Mellow");
builder.replace(2, 5, "Hello!");
String result = builder.toString();
System.out.println(result);
MeHello!w


3. Przydatne przykłady pracy ze stringami

Jak odwrócić ciąg do tyłu?

Istnieje specjalna metoda dla tej operacji - reverse(); Przykład:

Kod Wyjście na wyświetlaczu
String str = "Hello";
StringBuilder builder = new StringBuilder(str);
builder.reverse();
String result = builder.toString();
System.out.println(result);
olleH

KlasaStringBuffer

Jest jeszcze inna klasa - StringBufferjest to odpowiednik klasy StringBuilder, tylko jej metody mają modyfikator synchronized. A to oznacza, że ​​dostęp do obiektu StringBuffermożna uzyskać jednocześnie z kilku wątków.

Ale działa znacznie wolniej niż StringBuilder. Możesz potrzebować takiej klasy, gdy zaczniesz aktywnie uczyć się o wielowątkowości w zadaniu Java Multithreading .