Różnica między StringBufferem a StringBuilderem w Javie

Spisu treści:

Różnica między StringBufferem a StringBuilderem w Javie
Różnica między StringBufferem a StringBuilderem w Javie

Wideo: Różnica między StringBufferem a StringBuilderem w Javie

Wideo: Różnica między StringBufferem a StringBuilderem w Javie
Wideo: #36 StringBuffer and StringBuilder in Java 2024, Listopad
Anonim

Kluczowa różnica – String vs StringBuffer vs StringBuilder w Javie

String, StringBuffer i String Builder to klasy w Javie. Ciąg jest szeroko stosowany w programowaniu Java. Po utworzeniu obiektu String nie można ich zmienić. Za każdym razem, gdy nastąpi zmiana w ciągu, tworzy nowy ciąg. Nawet jeśli jest konkatenacją z istniejącym Stringiem, tworzy nowy String. Powoduje to marnowanie pamięci. Klasy StringBuffer i StringBuilder w Javie służą do modyfikowania String. Kluczową różnicą między String, StringBuffer i StringBuilder w Javie jest to, że String jest klasą do tworzenia obiektu typu String, który jest sekwencją znaków, StringBuffer jest klasą używaną do modyfikowania Strings, która zapewnia bezpieczeństwo wątków, a StringBuilder jest klasą klasa, która jest używana do modyfikowania ciągów, które nie zapewniają bezpieczeństwa wątków.

Co to jest ciąg znaków 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 mają niezmienne znaczenie po utworzeniu obiektu, nie można go zmienić. Obiekty utworzone za pomocą klas opakowujących, takich jak Integer, Byte, Float, Double są również niezmienne. Literał ciągu jest ujęty w podwójne cudzysłowy. np. "Witaj świecie". Za każdym razem, gdy tworzony jest literał ciągu, wirtualna maszyna języka Java (JVM) sprawdza pulę stałych ciągów. Jeśli String istnieje, zwracane jest odwołanie do stałej puli String. Jeśli jest to nowy String, ten obiekt jest tworzony w stałej puli String.

Różnica między StringBufferem a StringBuilderem w Javie
Różnica między StringBufferem a StringBuilderem w Javie
Różnica między StringBufferem a StringBuilderem w Javie
Różnica między StringBufferem a StringBuilderem w Javie

Rysunek 01: Program Java używający String, StringBuffer i StringBuilder

Odnieś się do poniższego fragmentu kodu.

Ciąg s1=„Cześć”;

s1=s1 + “Świat”;

System.out.println(s1);

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

Jeśli istnieje kod, który jest, Ciąg s1=”Cześć”;

Ciąg s2=s1;

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

Co to jest StringBuffer w Javie?

StringBuffer służy do zmiany obiektów String. Dlatego te obiekty można modyfikować. StringBuffer definiuje cztery konstruktory. StringBuffer(), StringBuffer(rozmiar int), StringBuffer(String string), StringBuffer (charSequence ch)

Odnieś się do poniższego kodu, StringBuffer s1=nowy StringBuffer(„Witaj”);

s1.append(“Świat”);

System.out.println(s1);

W instrukcji 1, s1 odnosi się do obiektu „Hello” w stosie. Obiekt jest modyfikowalny, ponieważ jest tworzony przy użyciu StringBuffer. W instrukcji 2 „Świat” jest dołączany do tego samego obiektu String „Hello”.

String Obiekty 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. Bezpieczeństwo wątków zmniejsza wydajność StringBuffer. Klasa StringBuffer zawiera metody takie jak append(), insert(), reverse(), replace().

Co to jest StringBuilder w Javie?

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

Odnieś się do poniższego kodu.

StringBuilder s1=nowy StringBuilder(„Witaj”);

s1.append(“Świat”);

System.out.println(s1);

W instrukcji 1, s1 odnosi się do obiektu „Hello” w stosie. Obiekt jest modyfikowalny, ponieważ jest tworzony przy użyciu StringBuilder. W instrukcji 2 „Świat” jest dołączany do tego samego obiektu String „Hello”. Nie ma tworzenia zupełnie nowego obiektu String.

String Obiekty 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 stringami, StringBufferem i StringBuilderem w Javie?

Wszystko może być użyte do tworzenia ciągów

Jaka jest różnica między StringBufferem a StringBuilderem w Javie?

String vs StringBuffer vs StringBuilder

Ciąg Ciąg jest klasą Javy, która służy do tworzenia obiektu typu String, który jest sekwencją znaków.
Bufor ciągu StringBuffer to klasa Java używana do tworzenia obiektów String, które można modyfikować z zachowaniem bezpieczeństwa wątków.
StringBuilder StringBuilder to klasa używana do tworzenia obiektów ciągów, które można modyfikować bez bezpieczeństwa wątków.
Zmienność
Ciąg Ciąg jest niezmienną klasą.
Bufor ciągu StringBuffer to zmienna klasa.
StringBuilder StringBuilder to klasa zmienna.
Bezpieczeństwo wątków
Ciąg Metody ciągu są bezpieczne dla wątków.
Bufor ciągu Metody StringBuffer są bezpieczne wątkowo i zsynchronizowane.
StringBuilder Metody StringBuilder nie są bezpieczne w wątkach i nie są zsynchronizowane.
Wydajność
Ciąg Ciąg jest szybki.
Bufor ciągu StringBuffer działa wolno.
StringBuilder StringBuilder jest szybki.

Podsumowanie – String vs StringBuffer vs StringBuilder w Javie

String, StringBuffer i StringBuilder wydają się być takie same, ale mają różne znaczenia. Wszystko to są klasy 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 służąca do modyfikowania Strings i zapewniania bezpieczeństwa wątków, natomiast StringBuilder to klasa klasa, która jest używana do modyfikowania Strings, która nie zapewnia bezpieczeństwa wątków.

Pobierz ciąg PDF vs StringBuffer vs StringBuilder w Javie

Możesz pobrać wersję PDF tego artykułu i używać jej do celów offline zgodnie z notatką cytowania. Proszę pobrać wersję PDF tutaj Różnica między String StringBuffer i StringBuilder w Javie

Zalecana: