Różnica między klasą String a StringBuffer w Javie
![Różnica między klasą String a StringBuffer w Javie - Technologia Różnica między klasą String a StringBuffer w Javie - Technologia](https://a.fondoperlaterra.org/technology-differences/difference-between-string-and-stringbuffer-class-in-java.jpg)
Zawartość
String i StringBuffer to klasy, które działają na ciągach. Klasa StringBuffer to klasa równorzędna klasy String. Obiekt klasy String ma stałą długość. Obiekt klasy StringBuffer jest możliwy do powiększenia. Podstawową różnicą między String a StringBuffer jest to, że obiekt klasy „String” to niezmienny. Obiekt klasy „StringBuffer” zmienny.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Wniosek
Wykres porównania
Podstawa do porównania | Strunowy | StringBuffer |
---|---|---|
Podstawowy | Długość obiektu String jest stała. | Długość StringBuffer można zwiększyć. |
Modyfikacja | Obiekt string jest niezmienny. | Obiekt StringBuffer można modyfikować. |
Występ | Podczas konkatenacji jest wolniejszy. | Jest szybszy podczas konkatenacji. |
Pamięć | Zużywa więcej pamięci. | Zużywa mniej pamięci. |
Przechowywanie | Pula stałych ciągów. | Pamięć stert. |
Definicja ciągu znaków
„String” to klasa w Javie. Obiekt klasy String ma stałą długość i najważniejsze jest, aby pamiętać, że obiekt klasy String jest „niezmienny”. Po zainicjowaniu obiektu String nie można ponownie zmodyfikować tego obiektu. Obiekt klasy String jest przechowywany w stałej puli String.
Pozwól nam najpierw zrozumieć, że za każdym razem, gdy tworzysz dowolny ciąg; tworzysz obiekt typu string. Stałe ciągów są również obiektami ciągów.
System.out.ln („Witaj, to rozwiązanie Teckpix”);
W powyższym stwierdzeniu ciąg „Witaj, to rozwiązanie Teckpix” jest ciągiem stałym.
Teraz zrozumiemy zmienność obiektu String za pomocą przykładu.
Ciąg str = nowy Ciąg („Teckpix”); str.concat („Rozwiązanie”); system.out.ln (str); // wyjście Teckpix
W powyższym kodzie próbowałem połączyć dwa ciągi „Teckpix” i „Solution”. Jak wiemy, za każdym razem, gdy tworzony jest ciąg znaków, oznacza to, że tworzony jest obiekt typu String. Stąd ciąg „Teckpix” tworzy obiekt, do którego odniesienie jest przypisane do obiektu ciąg „str”. Następnie próbowałem połączyć kolejny ciąg „Rozwiązanie” z ciągiem „Teckpix”, używając metody „concat ()” klasy String.
Definicja StringBuffer
Klasa „StringBuffer” to klasa równorzędna klasy „String”. Klasa StringBuffer zapewnia większą funkcjonalność ciągów. Obiekt klasy StringBuffer jest zmienny, co oznacza, że jego obiekt można modyfikować. Długość obiektu StringBuffer jest dowolna. Możesz wstawić znaki lub podłańcuchy w środku literału łańcucha, który jest przypisany do obiektu StringBuffer lub na jego końcu. StringBuffer przydziela miejsce dla 16 dodatkowych znaków, gdy nie jest wymagana żadna określona długość.
Pozwól nam zrozumieć zmienność obiektu StringBuffer na podstawie przykładu:
StringBuffer Sb = nowy StringBuffer („Teckpix”); Sb.append („Rozwiązanie”); system.out.ln (Sb); // Wyjście Teckpix Solution
Jak wiemy, obiekt StringBuffer można modyfikować. Metoda append () modyfikuje obiekt StringBuffer Sb, do którego początkowo przypisano wcześniej odwołanie do obiektu „Teckpix”. Metoda append () dołącza nowy dosłowny ciąg „Solution” na końcu dosłownego ciągu „Teckpix”. Teraz, gdy będę obiektem Sb, będzie to zmodyfikowany ciąg znaków „Teckpix Solutions”.
- Długość obiektu String jest stała, ale długość obiektu StringBuffer można w razie potrzeby zwiększyć.
- Obiekt String jest niezmienny, tzn. Tego obiektu nie można ponownie przypisać, natomiast obiekt StringBuffer jest zmienny.
- Obiekt String działa wolniej, natomiast obiekt StringBuffer jest szybszy.
- Obiekt String zużywa więcej pamięci, podczas gdy obiekty StringBuffer zużywa mniej pamięci.
- Obiekty String są przechowywane w stałej puli, podczas gdy obiekty StringBuffer są przechowywane w pamięci sterty.
Wniosek:
Obiekty StringBuffer zapewniają większą funkcjonalność ciągów w porównaniu z ciągiem klasy. Dlatego lepiej jest pracować z StringBuffer zamiast klasy String.