Różnica między String, StringBuffer i StringBuilder w Javie – załączony przykład

Opublikowany: 2022-01-30
Różnica między String, StringBuffer i StringBuilder w Javie - porównanie i załączony przykład

W tym samouczku Java omówimy różnicę między Java String, StringBuffer i StringBuilder.

Zacznijmy:

Strunowy:

Klasa String reprezentuje ciągi znaków. Wszystkie literały łańcuchowe w programach Java, takie jak „crunchify”, są zaimplementowane jako instancje tej klasy. Ciągi są stałe; ich wartości nie mogą zostać zmienione po ich utworzeniu.

Bufor ciągu:

Bezpieczna wątkowo, zmienna sekwencja znaków. Bufor ciągu jest podobny do ciągu, ale można go modyfikować.

W dowolnym momencie zawiera określoną sekwencję znaków, ale długość i zawartość sekwencji można zmienić za pomocą określonych wywołań metod.

Bufory ciągów są bezpieczne dla wielu wątków.

Kreator ciągów:

Zmienna sekwencja znaków. Ta klasa zapewnia interfejs API zgodny z StringBuffer, ale bez gwarancji synchronizacji.

Ta klasa jest przeznaczona do użytku jako zamiennik typu drop-in dla StringBuffer w miejscach, w których bufor ciągu był używany przez pojedynczy wątek (co zwykle ma miejsce).

Tam, gdzie to możliwe, zaleca się, aby ta klasa była używana zamiast StringBuffer, ponieważ będzie szybsza w większości implementacji.

Porównajmy wszystkie poniższe cechy String, StringBuffer i StringBuilder.

Strunowy Bufor ciągów StringBuilder
Bezpieczny wątek? TAk TAk Nie
Zsynchronizowane? TAk TAk Nie
Modyfikowalny? Nie (niezmienne) Tak (zmienne) Tak (zmienne)
Przechowywanie Pula ciągów Sterta Sterta
Występ Powolny Szybko Szybciej

Kod Java:

  • Utwórz klasę: CrunchifyStringVsStringBufferVsStringBuilder.java
  • Umieść w nim poniższy kod
  • Zapisz plik

W tym samouczku dodajemy dodawanie, dołączając sumę ciągu 199999 razy.

Wynik konsoli IntelliJ IDEA:

Uruchom powyższy program jako aplikację Java w IntelliJ IDEA lub w Eclipse Console, a otrzymasz wynik jak poniżej.

Daj mi znać, jeśli napotkasz jakiś problem z działaniem powyższego programu lub masz jakieś pytanie między String, StringBuffer i StringBuilder.