Różnica między String StringBuffer a StringBuilder w Javie

Kluczowa różnica - ciąg vs StringBuffer vs StringBuilder w Javie
 

String, StringBuffer i String Builder to klasy w Javie. Łańcuch jest szeroko stosowany w programowaniu Java. Po utworzeniu obiektu String nie można go zmienić. Za każdym razem, gdy nastąpi zmiana w ciągu, tworzy on nowy ciąg. Nawet jeśli jest to konkatenacja z istniejącym ciągiem, tworzy nowy ciąg. Powoduje to marnowanie pamięci. StringBuffer i StringBuilder w Javie służą do modyfikowania String. The kluczowa różnica między String, StringBuffer i StringBuilder w Javie jest to String to klasa służąca do tworzenia obiektu typu String będącego sekwencją znaków, StringBuffer to klasa używana do modyfikowania ciągów zapewniających bezpieczeństwo wątków, a StringBuilder to klasa służąca do modyfikowania ciągów, które nie zapewniają bezpieczeństwa wątków.

ZAWARTOŚĆ

1. Przegląd i kluczowa różnica
2. Co to jest String w Javie
3. Co to jest StringBuffer w Javie
4. Co to jest StringBuilder w Javie
5. Podobieństwa między String StringBuffer i StringBuilder w Javie
6. Porównanie obok siebie - String vs StringBuffer vs StringBuilder w Javie w formie tabelarycznej
7. Podsumowanie

Co to jest String w Javie?

Klasa string znajduje się w pakiecie java.lang. Za każdym razem, gdy programista tworzy String, jest to obiekt typu String. Ciągi są niezmienne, co oznacza, że ​​po utworzeniu obiektu nie można go zmienić. Obiekty utworzone przy użyciu klas opakowań, takich jak Integer, Byte, Float, Double, są również niezmienne. Dosłowny ciąg jest ujęty w podwójne cudzysłowy. na przykład "Witaj świecie". Za każdym razem, gdy tworzony jest literał łańcucha, wirtualna maszyna Java (JVM) sprawdza pulę stałych łańcucha. Jeśli ciąg istnieje, zwracane jest odwołanie do stałej puli ciągów. Jeśli jest to nowy Ciąg, obiekt ten jest tworzony w puli stałej Ciąg.

Rysunek 01: Program Java korzystający z String, StringBuffer i StringBuilder

Zobacz poniższy fragment kodu.

Ciąg s1 = „Cześć”;

s1 = s1 + „Świat”;

System.out.println (s1);

W pierwszej instrukcji s1 odnosi się do „Hello” w puli stałej String. W drugiej instrukcji JVM nie zmienia istniejącego ciągu. Zamiast tego tworzy nowy ciąg znaków jako „Hello World”, a s1 odnosi się teraz do tego nowego ciągu. Wyjściowy obiekt „Hello” nadal istnieje w stałej puli String.

Jeśli istnieje kod, który jest,

Ciąg s1 = „Hello”;

Ciąg s2 = s1;

s1, s2 oba będą odnosić się do obiektu String „Hello”.

Co to jest StringBuffer w Javie?

Klasa StringBuffer służy do modyfikowania obiektów String. Dlatego te obiekty można modyfikować. StringBuffer definiuje cztery konstruktory. StringBuffer (), StringBuffer (int size), StringBuffer (String str), StringBuffer (charSequence [] ch)

Zobacz kod poniżej,

StringBuffer s1 = new StringBuffer („Hello”);

s1.append („Świat”);

System.out.println (s1);

W instrukcji 1 s1 odnosi się do obiektu „Hello” w stercie. Obiekt można modyfikować, ponieważ został utworzony przy użyciu StringBuffer. W oświadczeniu 2 „Świat” jest dołączany do tego samego obiektu łańcuchowego „Hello”.

Obiekty łańcuchowe utworzone za pomocą klasy StringBuffer mogą oszczędzać pamięć. StringBuffer zapewnia bezpieczeństwo wątków, ponieważ dwa wątki nie mogą jednocześnie uzyskać dostępu do tej samej metody w klasie StringBuffer. Zmniejszenie bezpieczeństwa wątku Wydajność StringBuffer. Klasa StringBuffer zawiera metody takie jak append (), insert (), reverse (), replace ().

Co to jest StringBuilder w Javie?

Klasa StringBuilder służy do modyfikowania obiektów String. Dlatego te obiekty można modyfikować. Funkcjonalność jest podobna do StringBuffer, ale nie zapewnia to bezpieczeństwa wątków. StringBuilder ma konstruktory takie jak StringBuilder (), StringBuilder (int rozmiar), StringBuilder (String str).

Zobacz poniższy kod.

StringBuilder s1 = new StringBuilder („Hello”);

s1.append („Świat”);

System.out.println (s1);

W instrukcji 1 s1 odnosi się do obiektu „Hello” w stercie. Obiekt można modyfikować, ponieważ został utworzony za pomocą StringBuilder. W oświadczeniu 2 „Świat” jest dołączany do tego samego obiektu łańcuchowego „Hello”. Nie ma tworzenia całkowicie nowego obiektu String.

Obiekty łańcuchowe utworzone za pomocą klasy StringBuilder mogą oszczędzać pamięć. W przeciwieństwie do StringBuffer, StringBuilder nie zapewnia bezpieczeństwa wątków, ponieważ dwa wątki mogą jednocześnie uzyskiwać dostęp do tej samej metody w klasie StringBuilder. Klasa StringBuilder zawiera metody takie jak append (), insert (), reverse (), replace ().

Jakie jest podobieństwo między String, StringBuffer i StringBuilder w Javie?

  • Wszystkie mogą być użyte do tworzenia ciągów.

Jaka jest różnica między String StringBuffer a StringBuilder w Javie?

String vs StringBuffer vs StringBuilder

Strunowy Łańcuch jest klasą Java, która służy do tworzenia obiektu typu Łańcuch, który jest sekwencją znaków.
StringBuffer StringBuffer to klasa Java, która służy do tworzenia obiektów String, które można modyfikować za pomocą bezpieczeństwa wątków.
StringBuilder StringBuilder to klasa używana do tworzenia obiektów łańcuchowych, które można modyfikować bez bezpieczeństwa wątków.
Zmienność
Strunowy Ciąg jest niezmienną klasą.
StringBuffer StringBuffer to zmienna klasa.
StringBuilder StringBuilder to zmienna klasa.
Bezpieczeństwo wątków
Strunowy Metody String są bezpieczne dla wątków.
StringBuffer Metody StringBuffer są bezpieczne dla wątków i synchronizowane.
StringBuilder Metody StringBuilder nie są bezpieczne dla wątków i nie są synchronizowane.
Występ
Strunowy Sznurek jest szybki.
StringBuffer StringBuffer jest wolny.
StringBuilder StringBuilder jest szybki.

Podsumowanie - ciąg vs StringBuffer vs StringBuilder w Javie 

String, StringBuffer i StringBuilder wydają się być takie same, ale mają różne znaczenia. Wszystkie są klasami Java. Różnica między String, StringBuffer i StringBuilder w Javie polega na tym, że String to klasa do tworzenia obiektu typu String, który jest zestawem znaków, StringBuffer to klasa używana do modyfikowania ciągów i zapewniania bezpieczeństwa wątków, podczas gdy StringBuilder jest klasa używana do modyfikowania ciągów, które nie zapewniają bezpieczeństwa wątków.

Pobierz plik PDF String vs StringBuffer vs StringBuilder w Javie

Możesz pobrać wersję PDF tego artykułu i używać go do celów offline zgodnie z cytatem. Pobierz wersję PDF tutaj Różnica między String StringBuffer a StringBuilder w Javie

Odniesienie:

1. „String vs StringBuffer vs StringBuilder.” JournalDev, 30 lipca 2017 r. Dostępny tutaj
2. „Java Hungry”. Różnica między klasami String, StringBuilder i StringBuffer z przykładem: Java | Java Hungry. Dostępny tutaj 
3.tutorialspoint.com. „Ciągi Java”. Punkt. Dostępny tutaj