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

Autor: Laura McKinney
Data Utworzenia: 3 Kwiecień 2021
Data Aktualizacji: 3 Lipiec 2024
Anonim
Różnica między klasą String a StringBuffer w Javie - Technologia
Różnica między klasą String a StringBuffer w Javie - Technologia

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.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaStrunowyStringBuffer
PodstawowyDługość obiektu String jest stała.Długość StringBuffer można zwiększyć.
ModyfikacjaObiekt string jest niezmienny.Obiekt StringBuffer można modyfikować.
WystępPodczas konkatenacji jest wolniejszy.Jest szybszy podczas konkatenacji.
PamięćZużywa więcej pamięci.Zużywa mniej pamięci.
PrzechowywaniePula 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.


Ponieważ obiekty String są niezmienne, nie jest wykonywana modyfikacja ciągu „Teckpix”, a nowy ciąg „Solution” tworzy kolejny obiekt w puli stałej ciągów. Jednak odniesienie do obiektu „Rozwiązanie” nie jest przechwytywane przez żaden obiekt, dlatego odwołanie do obiektu Rozwiązanie zostało utracone, mimo że nadal jest obecne w puli stałej ciągów. Ponieważ nie dokonuje się żadnej modyfikacji obiektu Teckpix, kiedy jako obiekt str, do którego wcześniej przypisałem odwołanie do Teckpix, będzie tylko ciąg „Teckpix”.

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

  1. Długość obiektu String jest stała, ale długość obiektu StringBuffer można w razie potrzeby zwiększyć.
  2. Obiekt String jest niezmienny, tzn. Tego obiektu nie można ponownie przypisać, natomiast obiekt StringBuffer jest zmienny.
  3. Obiekt String działa wolniej, natomiast obiekt StringBuffer jest szybszy.
  4. Obiekt String zużywa więcej pamięci, podczas gdy obiekty StringBuffer zużywa mniej pamięci.
  5. 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.