Java - String vs StringBuffer

В этой статье показана разница во времени, затрачиваемом на аналогичные операции над объектом 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

согласно документам Java]

ссылка://тег/строка/[строка]ссылка://тег/буфер строки/[строка буфера]