В этой статье показана разница во времени, затрачиваемом на аналогичные операции над объектом
String
и объектом` StringBuffer`.
, String является неизменным классом и создает новый объект каждый
время операции над ним , StringBuffer - изменчивый класс, накладные расходы на объект
экземпляр во время операций удаляется. Следовательно, время, затрачиваемое на операции, меньше по сравнению с
String
1. String vs StringBuffer
Давайте теперь сравним время выполнения, занятое классом
String
и классом` StringBuffer` для добавления 10000 символов.
TimeTester.java
package com.techfou; public class TimeTester{ public static void main(String[]args) { String aString = ""; long before = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { aString = aString + "x"; } long after = (System.currentTimeMillis()); System.out.println("Execution Time for String: " + (after - before)); before = System.currentTimeMillis(); StringBuffer aStringBuffer = new StringBuffer(); for (int i = 0; i < 10000; i++) { aStringBuffer.append("x"); } after = (System.currentTimeMillis()); System.out.println("Execution Time for StringBuffer: " + (after - before)); } }
Выполнив приведенный выше код, вы получите следующий вывод. Выход может отличаться в зависимости от скорости вашего процессора. Как ясно видно, для добавления 10000 строк в объект String требуется 128 миллисекунд.
По сравнению с этим StringBuffer требуется всего 11 миллисекунд, чтобы это произошло.
Execution Time for String: 128 Execution Time for StringBuffer: 11
Это доказывает, что когда дело доходит до времени,
StringBuffer
быстрее, чем` String`. Однако неизменяемое свойство
String
делает его потокобезопасным.
2. Вывод
В заключение можно сказать, что
StringBuffer
является лучшим выбором по сравнению с` String`, если вы хорошо знакомы с его синтаксисом, а также с функциями, предоставляемыми классом. Это быстрее и изменчиво.
String
ограничен для использования в ситуациях, требующих объектов только для чтения или требующих манипуляции со строками.
Рекомендации
, % E2% 80% 9Dhttp://www.javaworld.com/article/2076072/build-ci-sdlc/stringbuffer-versus-string.html%E2%80%9D[Почему
StringBuffer быстрее, чем String], http://docs.oracle.com/javase/7/docs/api/java/lang/String.html [String
Javadocs], https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html [StringBuffer
Javadocs], https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html [Definition
согласно документам Java]
ссылка://тег/строка/[строка]ссылка://тег/буфер строки/[строка буфера]