Klasa
Rozważ poniższy kod:
String
tworzy niezmienne ciągi znaków. Oznacza to, że jeśli zastosujesz jakąkolwiek operację na ciągu znaków lub operację na ciągu, wynikiem będzie nowy ciąg. Jeżeli ten nowy ciąg nie zostanie przypisany do żadnej zmiennej, wynik operacji zostanie utracony. W związku z tym operacje na takich ciągach koniecznie prowadzą do utworzenia nowego ciągu. A to oznacza dodatkowe koszty pamięci i czasu procesora. Jeśli na ciągu znaków jest dużo operacji, często bardziej efektywne jest użycie ciągów dynamicznych, które są implementowane przez klasę StringBuilder
.
String s = "Some text";
int count = 100;
for(int i = 0; i<100;i++){
s+=i;
}
**********************
StringBuilder s = new StringBuilder(110);
int count = 100;
s.append("Some text");
for(int i = 0;i<count;i++){
s.append(i);
}
Powyższy kod rozwiązuje ten sam problem. Kiedy dodamy 100 nowych podciągów do danego ciągu. W pierwszym przykładzie wykorzystano w tym celu klasę String
, co nie jest zbyt efektywne, ponieważ każde dodanie podłańcucha prowadzi do konstrukcji nowego obiektu String
. A to dodatkowa strata pamięci i czasu. W drugim przykładzie problem ten rozwiązano za pomocą klasy StringBuilder
. Tworzymy obiekt klasy wcześniej StringBuilder
, a następnie za pomocą metody append
tworzymy potrzebny nam ciąg znaków, zmieniając zawartość tworzonego obiektu StringBuilder
, ale bez ponownego tworzenia samego obiektu.
GO TO FULL VERSION