Для пользователей, которые регистрируются. Если Вам не приходит письмо с подтверждением email, пишите на admin[at]quizful[dot]net - будем подтверждать вручную. Просим прощения за доставленные неудобства.

С уважением,
команда Quizful
Знаете ли Вы, что

Список полученных сертификатов находится на странице Вашего профиля. Сертификаты можно распечатать или разместить на Вашем сайте.

Топ контрибуторов
loading
loading
Лента обновлений
ссылка May 17 19:13
Комментарий от elirijndael:
Полностью согласен с valid_name.
ссылка May 17 18:47
Комментарий от Aleksandr89:
Неплохой тест. Для тех кто хочет ещё попрактиковатьс...
ссылка May 17 15:13
Комментарий от dpdpdp:
Поменяйте радиокнопки на чекбоксы.
Во втором варианте про...
ссылка May 17 11:55
Комментарий от Torredo812:
вот это подвох!!!
забываешь что х увеличился))и думае...
ссылка May 17 10:50
Комментарий от lesha1980:
Хороший вопрос. Получается, что проверяется только x в...
Статистика

Тестов: 130, вопросов: 5791. Пройдено: 126752 / 526558.

Разница между String, StringBuffer/StringBuilder

Автор: bodzu  к списку      

Вопрос
В чем разница между классами String, StringBuffer/StringBuilder?
Ответ
Класс String:

Класс String является immutable - Вы не можете модифицировать объект String, но можете заменить его созданием нового экземпляра. Создание нового экземпляра обходится дороговато:

    //Inefficient version using immutable String
    String output = "Some text";
    int count = 100;
    for(int i =0; i<count; i++) {
    output += i;
    }
    return output;
Кусок кода, в примере выше создаст 99 новых объектов String, 98 из которых будут тут же откинуты. Создание новых объектов неэффективно.

StringBuffer/StringBuilder

Класс StringBuffer является mutable - использовать StringBuffer или StringBuilder следует тогда, когда вы хотите модифицировать содержимое. StringBuilder был добавлен в пятой джаве и он во всем идентичен классу StringBuffer, за исключением того, что он не синхронизирован, что делает его значительно шустрее. Но цена скорости - небезопасное поведение в мультипоточной среде.

    //More efficient version using mutable StringBuffer
    StringBuffer output = new StringBuffer(110);// set an initial size of 110
    output.append("Some text");
    for(int i =0; i<count; i++) {
        output.append(i);
    }
    return output.toString();
Вышеуказанный код создает только два новых объекта, StringBuffer и стринговую константу, которая возвращается. StringBuffer расширяется по мере надобности, что, в свою очередь дороговато, так что лучше инициализировать StringBuffer корректным значением размера.

Другой важный момент заключается в том, что создание дополнительных строк не ограничено математическим оператором "+", но существует некоторое количество методов, таких как concat(), trim(), substring(), replace() в классах String, которые генерируют новые объекты.

Если Вам понравился вопрос, проголосуйте за него

Голосов: 14  loading...
ivanBudko   c0nst   sbsp11   art   mokeyd   alex_skn   sheffap   Artem   silicon   grim   drevlyanin   archik1223   LAV_   vtk81