Автор оригинала: MEHUL JAIN.
Допустим, у вас есть 1000 чисел, и вы хотите объединить их все в строку. Наивный подход заключается в использовании оператора объединения (+).
public class StringConcatenate { public static void main(String[] args) { int n = 1000; String result = ""; for(int i=0;i
Но это не лучший подход для объединения чисел. Строки неизменяемы в JAVA , что означает, что каждый раз, когда мы используем оператор ” + ” для объединения числа в результат, создается новый строковый объект.’ i’ сначала автоматически преобразуется JAVA в строку. Затем выполняется новое выделение памяти для хранения объединения “результат” и ” я ” (отбрасывание предыдущего места для результата). Следовательно, создается много временного мусора в памяти кучи. Выделение памяти для каждой итерации делает программу очень медленной и может в конечном итоге поглотить всю вашу память кучи для большего n. Чтобы предотвратить эту ситуацию, JAVA имеет два класса StringBuffer и Строковый конструктор .
StringBuffer Против StringBuilder
StringBuffer и StringBuilder являются изменяемыми в JAVA. Таким образом, мы можем изменить любой из них, не создавая новый объект. Следовательно, это ускоряет работу программы и экономит много места. Разница между StringBuffer и StringBuilder это StringBuffer потокобезопасен, в то время как StringBuilder не является потокобезопасным. Поэтому StringBuilder работает быстрее. StringBuffer следует использовать только в том случае, если у нас есть общее буферное пространство между потоками, в противном случае Следует использовать StringBuilder .
public class StringConcatenate { public static void main(String[] args) { int n = 1000; /* * Using StringBuffer in JAVA */ String result_buffer = ""; StringBuilder sbuffer = new StringBuilder(); for(int i=0;i
Производительность: Струнный буфер Против “+”
public class StringConcatenate { public static void main(String[] args) { int n = 10000; String result_op = ""; long t1 = System.currentTimeMillis(); for(int i=0;i
ЗАПИСКА
Следует отметить, что если существует один оператор, содержащий несколько операторов ” + ” для объединения строк, то JAVA автоматически использует StringBuffer/StringBuilder. Например:
public class StringConcatenate { public static void main(String[] args) { String t = "Hello!" + " This" + " is" + " my" + " first" + " post."; System.out.println(t); } } /* Output Hello! This is my first post. */
Здесь StringBuilder будет использоваться JAVA. Таким образом, новый объект не будет создан.
Оригинал: “https://www.codementor.io/@mehuljain/string-concatenation-in-java-7m55jun7h”