Клас
Розглянемо код нижче:
String
створює незмінні рядки. Це означає, що якщо застосувати будь-яку операцію до рядка або операції до рядка, то в результаті буде побудовано новий рядок. Якщо цей новий рядок не привласнити жодної змінної, то результат операції буде втрачено. Відповідно операції над такими рядками обов'язково призводять до створення нового рядка. А це додаткові витрати пам'яті та часу процесора. Якщо операцій над рядком досить багато, часто буває ефективніше скористатися динамічними рядками, які реалізуються класом 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);
}
У наведеному коді розглядається те саме завдання. Коли ми до заданого рядка додаємо 100 нових підрядків. У першому прикладі цієї мети використовується клас String
, що дуже ефективно, оскільки кожне додавання підрядки веде до побудови нового об'єкта String
. А це додаткова витрата пам'яті та часу. У другому прикладі це завдання вирішується за допомогою класу StringBuilder
. Ми заздалегідь створюємо об'єкт класу StringBuilder
, а потім за допомогою методу append
формуємо потрібний нам рядок, змінюючи вміст створеного об'єкта StringBuilder
, але без перестворення самого об'єкта.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ