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.
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
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”.
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 ().
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 ().
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. |
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.
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
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