Różnica między StringBuffer a StringBuilder

StringBuffer vs StringBuilder

Java jest bardzo popularnym językiem obiektowym. W Javie klasa String zawiera sekwencję znaków, których nie można modyfikować (po zainicjowaniu). Alternatywnie język programowania Java zapewnia dwa typy zmiennych sekwencji znaków. Oznacza to, że gdy programiści muszą zmodyfikować określony ciąg (po inicjalizacji), muszą użyć klasy StringBuffer lub StringBuilder zamiast klasy String. StringBuffer został wprowadzony w JDK 1.0, a StringBuilder został wprowadzony w JDK 1.5, faktycznie jako zamiennik klasy StringBuffer (dla środowisk jednowątkowych).

Co to jest StringBuffer?

Klasa StringBuffer została wprowadzona w JDK 1.0. Klasa StringBuffer należy do pakietu java.lang i jest dziedziczona z ogólnego java.lang.object. Programiści nie mogą go dalej rozszerzać, ponieważ jest to klasa ostateczna. Klasa StringBuffer implementuje interfejsy Serializable, Appendable i CharSequience. Obiekt klasy StringBuffer może przechowywać ciąg znaków, który można modyfikować i jest bezpieczny dla wątków. Oznacza to, że jest bardzo podobny do obiektu String, ale sekwencję znaków (długość i treść) można zmienić w dowolnym momencie po zainicjowaniu obiektu StringBuffer. Należy to jednak zrobić przy użyciu określonych metod dostarczonych przez klasę StringBuffer. Istnieją dwie podstawowe operacje w klasie StringBuffer. Są one dostarczane przez metody append () i insert (). Te metody są przeciążone, więc mogą przyjmować dane dowolnego typu, takie jak liczby całkowite i długie. Obie metody najpierw przekształcają dowolne dane wejściowe w łańcuch, a następnie dodają (dołączają lub wstawiają) znaki odpowiedniego łańcucha do istniejącego obiektu Stribbuffer. Metoda append () dodaje przekonwertowany ciąg na końcu istniejącego obiektu StringBuffer, a metoda insert () doda znaki wejściowe do określonego punktu wstawiania.

Co to jest StringBuilder?

Klasa StringBuilder została wprowadzona w JDK 1.5. StringBuilder API jest bardzo podobny do StringBuffer API. W rzeczywistości klasa StringBuilder została faktycznie wprowadzona jako zamiennik klasy StringBuffer (dla aplikacji jednowątkowych). Klasa StringBuilder należy do pakietu java.lang i jest dziedziczona z ogólnego java.lang.object. Jest to klasa ostateczna, dlatego programiści nie mogą jej rozszerzyć. Klasa StringBuilder implementuje interfejsy Serializable, Appendable i CharSequience. Obiekt klasy StringBuilder może przechowywać ciąg znaków, który można modyfikować, ale nie jest bezpieczny dla wątków. Oznacza to, że jest bardzo podobny do obiektu String, ale ciąg można zmienić w dowolnym momencie. Ale klasa StringBuilder nie zapewnia synchronizacji i dlatego twierdzi się, że jest szybsza niż przy użyciu klasy StringBuffer. Klasa StringBuilder zapewnia metody append () i insert () o dokładnie takiej samej funkcjonalności jak w klasie StringBuffer.

Jaka jest różnica między StringBuffer a StringBuilder?

Chociaż klasy StringBuilder i StringBuffer mogą być używane do zmiennych sekwencji znaków w Javie, mają one zasadniczą różnicę. W przeciwieństwie do klasy StringBuffer, klasa StringBuilder nie jest bezpieczna dla wątków i nie zapewnia synchronizacji. Dlatego zaleca się stosowanie klasy StringBuilder zamiast klasy StringBuffer w aplikacjach jednowątkowych, ponieważ twierdzi się, że klasa StringBuilder będzie znacznie szybsza niż klasa StringBuffer (w normalnych okolicznościach).