Wykres porównania
Podstawa do porównania | Strunowy | StringBuffer |
---|---|---|
Podstawowy | Długość obiektu String jest stała. | Długość StringBuffer może zostać zwiększona. |
Modyfikacja | Obiekt String jest niezmienny. | Obiekt StringBuffer jest zmienny. |
Wydajność | Podczas konkatenacji jest wolniejszy. | Jest szybszy podczas konkatenacji. |
Pamięć | Zużywa więcej pamięci. | Zużywa mniej pamięci. |
Przechowywanie | Ciąg stała puli. | Heap Memory. |
Definicja ciągu
"String" to klasa w Javie. Obiekt klasy String ma stałą długość, a co najważniejsze, obiekt klasy String jest "niezmienny". Po zainicjowaniu obiektu String nie można go ponownie zmodyfikować. Obiekt klasy String jest przechowywany w stałej puli String.
Najpierw zrozumiem, że za każdym razem, gdy tworzysz dowolny ciąg; tworzysz obiekt typu string. Stałe łańcuchowe są również obiektami łańcuchowymi.
System.out.println ("Hello this is Teckpix Solution");
W powyższym stwierdzeniu ciąg "Hello this is Teckpix Solution" jest stałą łańcuchową.
Teraz poznajmy zmienność obiektu String za pomocą przykładu.
String str = new String ("Teckpix"); str.concat ("Rozwiązanie"); system.out.println (str); // wyjście Teckpixa
W powyższym kodzie próbowałem połączyć dwa ciągi "Teckpix" i "Rozwiązanie". Jak wiemy, kiedy tworzony jest ciąg znaków, oznacza to, że tworzony jest obiekt typu String. Stąd ciąg "Teckpix" tworzy obiekt, którego referencja jest przypisana do obiektu napisowego "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" jest klasą peer klasy "String". Klasa StringBuffer zapewnia większą funkcjonalność ciągów. Obiekt klasy StringBuffer może być modyfikowany, ponieważ jego obiekt może być modyfikowany. Długość obiektu StringBuffer jest dozwolona. Możesz wstawiać znaki lub podciągi w środku literału ciągu, który jest przypisany do obiektu StringBuffer lub na jego końcu. StringBuffer przydziela miejsce na 16 dodatkowych znaków, gdy nie jest wymagana żadna określona długość.
Rozumiemy zmienność obiektu StringBuffer na przykładzie:
StringBuffre Sb = new StringBuffer ("Teckpix"); Sb.append ("Solution"); system.out.println (Sb); // Wyjściowy roztwór Teckpix
Jak wiemy, obiekt StringBuffer jest zmienny. Metoda append () modyfikuje obiekt StringBuffer Sb, do którego wcześniej przypisano obiekt odniesienia "Teckpix". Metoda append () dołącza nowy napis literowy "Solution", do końca literału "Teckpix". Teraz, kiedy wydrukuję obiekt Sb, wydrukuje zmodyfikowany obiekt napisowy "Rozwiązania Teckpix".
Kluczowa różnica między ciągiem a StringBuffer
- Długość obiektu String jest stała, ale długość obiektu StringBuffer może zostać zwiększona w razie potrzeby.
- Obiekt String jest niezmienny, tzn. Obiekt nie może być ponownie przypisany, podczas gdy obiekt StringBuffer jest zmienny.
- Obiekt String jest wolniejszy w działaniu, natomiast obiekt StringBuffer jest szybszy.
- Obiekt String zużywa więcej pamięci, podczas gdy obiekty StringBuffer zużywają mniej pamięci.
- Obiekty ciągów są przechowywane w stałej puli, podczas gdy obiekty StringBuffer są przechowywane w pamięci sterty.
Wniosek:
Obiekty StringBuffer zapewniają większą funkcjonalność łańcuchów w porównaniu do klasy String. Dlatego lepiej jest pracować z StringBuffer zamiast klasy String.