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 w języku Java. Po utworzeniu obiektu String nie można ich zmienić. Za każdym razem, gdy następuje zmiana w ciągu, tworzy nowy ciąg. Nawet jeśli jest to konkatenacja z istniejącym ciągiem, tworzy nowy ciąg. Powoduje to marnotrawstwo pamięci. Klasy StringBuffer i StringBuilder w języku Java służą do modyfikowania ciągu. Kluczową różnicą między String, StringBuffer i StringBuilder w Javie jest to, że String jest klasą do tworzenia obiektu typu String będącego sekwencją znaków, StringBuffer jest klasą używaną do modyfikowania ciągów znaków, która zapewnia bezpieczeństwo wątków, a StringBuilder jest klasa, która jest używana do modyfikowania ciągów, które nie zapewniają bezpieczeństwa wątków.
ZAWARTOŚĆ
1. Omówienie i kluczowe różnice
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 StringBuffer i StringBuilder w Javie
6. Bezpośrednie porównanie - String vs StringBuffer vs StringBuilder w Java w formie tabelarycznej
7. Podsumowanie
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 znaków są niezmienne, co oznacza, że po utworzeniu obiektu nie można go zmienić. Obiekty utworzone przy użyciu klas otoki, takich jak Integer, Byte, Float, Double, są również niezmienne. Literał łańcuchowy jest ujęty w podwójne cudzysłowy. np. „Hello World”. 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 puli stałej String. Jeśli jest to nowy ciąg, ten obiekt jest tworzony w puli stałej typu String.
Rysunek 01: Program Java wykorzystujący String, StringBuffer i StringBuilder
Zobacz poniższy fragment kodu.
String s1 = „Witaj”;
s1 = s1 + „Świat”;
System.out.println (s1);
W pierwszej instrukcji s1 odnosi się do „Hello” w puli stałej typu String. W drugiej instrukcji JVM nie zmienia istniejącego ciągu. Zamiast tego tworzy nowy ciąg jako „Hello World”, a s1 odwołuje się teraz do tego nowego ciągu. Wychodzący obiekt „Hello” nadal istnieje w puli stałej String.
Jeśli istnieje kod, String s1 = „Cześć”;
Ciąg s2 = s1;
s1, s2 oba będą odwoływały 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)
Zapoznaj się z kodem poniżej, StringBuffer s1 = new StringBuffer („Witaj”);
s1.append („Świat”);
System.out.println (s1);
W instrukcji 1 s1 odnosi się do obiektu „Hello” w stercie. Obiekt jest zmienny, ponieważ jest tworzony za pomocą StringBuffer. W instrukcji 2 „World” jest dołączane do tego samego obiektu String „Hello”.
Obiekty typu String 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ść StringBuffera. 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 size), StringBuilder (String str).
Zapoznaj się z poniższym kodem.
StringBuilder s1 = new StringBuilder („Witaj”);
s1.append („Świat”);
System.out.println (s1);
W instrukcji 1 s1 odnosi się do obiektu „Hello” w stercie. Obiekt jest zmienny, ponieważ jest tworzony za pomocą StringBuilder. W instrukcji 2 „World” jest dołączane do tego samego obiektu String „Hello”. Nie ma tworzenia zupełnie nowego obiektu String.
Obiekty typu String 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 ciągami, StringBuffer i StringBuilder w Javie?
Wszystkie mogą być używane do tworzenia ciągów
Jaka jest różnica między StringBuffer String a StringBuilder w Javie?
Porównaj środek artykułu przed tabelą
String vs StringBuffer vs StringBuilder |
|
Strunowy | Łańcuch jest klasą Javy używaną do tworzenia obiektu typu String, który jest sekwencją znaków. |
StringBuffer | StringBuffer to klasa Javy używana do tworzenia obiektów typu String, które można modyfikować za pomocą funkcji bezpieczeństwa wątków. |
StringBuilder | StringBuilder to klasa używana do tworzenia obiektów typu string, które można modyfikować bez zabezpieczenia wątków. |
Zmienność | |
Strunowy | Ciąg jest niezmienną klasą. |
StringBuffer | StringBuffer to zmienna klasa. |
StringBuilder | StringBuilder to zmienna klasa. |
Bezpieczeństwo wątku | |
Strunowy | Metody String są bezpieczne wątkowo. |
StringBuffer | Metody StringBuffer są bezpieczne dla wątków i zsynchronizowane. |
StringBuilder | Metody StringBuilder nie są bezpieczne w wątkach i nie są zsynchronizowane. |
Wydajność | |
Strunowy | Sznurek jest szybki. |
StringBuffer | StringBuffer jest powolny. |
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 jest klasą Java. Różnica między String, StringBuffer i StringBuilder w Javie polega na tym, że String jest klasą do tworzenia obiektu typu String, który jest zestawem znaków, StringBuffer jest klasą używaną do modyfikowania ciągów znaków i zapewniania bezpieczeństwa wątków, podczas gdy StringBuilder jest klasa, która jest używana do modyfikowania Strings, która nie zapewnia bezpieczeństwa wątków.
Pobierz PDF String vs StringBuffer vs StringBuilder w Javie
Możesz pobrać wersję PDF tego artykułu i używać jej w trybie offline, zgodnie z notą cytowania. Pobierz wersję PDF tutaj Różnica między StringBuffer i StringBuilder w Javie