среда, 2 февраля 2011 г.

Основы. StringBuilder и StringBuffer

При разработке программы, особенно когда поджимает время, мы не всегда используем "правильные" классы. Что я под этим подразумеваю, читайте ниже.



Итак, у нас есть задача определить некий метод, который бы "сцеплял" строки друг с другом, создавая тем самым новый объект типа String. Для решения этой задачи подходят два класса: StringBuffer и StrigBuilder. Оба они могут создавать новую строку путем вызова метода append(...). Так какой же нам выбрать?

Для этого надо знать их внутренние отличия. Так вот, самым главным отличием является то, что StringBuffer является потокобезопасным (thread-safe), а StringBuilder нет. Это означает, что все методы StringBuffer синхронизированы и только один поток имеет доступ к объекту, изменяя его, в то время как все остальные потоки программы ждут, пока он снимет блокировку с объекта. Поэтому StringBuffer работает медленнее, чем StringBuilder примерно в 1.5 раза. Следовательно, если мы разрабатываем однопоточное приложение, лучше выбрать StringBuilder.

Кстати вопрос различия этих двух классов также любят задавать на интервью при трудоустройстве.

Комментариев нет:

Отправить комментарий