Сложение и преобразование строк.
Сложение и преобразование строк. Еще для вас сделали в классе String одну вспомогательную операцию. Это «+», чтобы не вызывать конкатенацию, а просто складывать все через знак «плюс». Я могу сделать так.
Я думаю, вы понимаете, что эта операция «+» не складывает строку с числом, а число преобразуется в строку и две строки складываются. Операция очень удобная – конкатенация строк. И опять же, строки не изменяемы, а значит, создается новый объект. Вопрос: Что нужно знать про эту операцию? Ответ: Вообще ее не рекомендуется использовать. Вопрос: Почему? Ответ: А представьте себе длинную цепочку из этих плюсов. Ведь операция «+» она бинарная. И каждый раз, когда она срабатывает, операнд слева и операнд справа. У нас что создается? Новый объект. И у вас получается строка, где складываются 10 маленьких строк, и будет создано 9 никому не нужных объектов, которые будут временные. А потом сборка мусора для них. И что в этом хорошего? Ничего. В такой ситуации надо очень хорошо подумать. Если это клиентская машина, то меня не очень волнует производительность на клиентской машине. А если это сервер? То волнует. Классы динамических строк. Еще очень часто наши задачи со строками сводятся, конечно, к преобразованию «в строку» и «из строки» в обратную сторону. Преобразовать все что угодно в строку в можете совершенно легко используя метод « toString ». Вы спросите: «Все можно преобразовать в toString? » - Абсолютно все. Вопрос: Почему? Ответ: А дело в том, что метод toString по идеологии Java находится в классе Object на самой вершине иерархии и доступен всем. И всем кому он нужен, они написали свою собственную версию toString. Поэтому любой тип можно преобразовать в строку, если мы говорим о классах-обертках.
По поводу преобразования из строки. Он (метод Parse в классе-обертке) получает строку, которую пользователь ввел с клавиатуры, а возвращает простой тип, а не обертку. Раз уж мы заговорили об этих обертках и про класс String, то сразу скажу еще один важный момент. Все объекты, которые вы создаете, используя классы-обертки, они тоже все не изменяемые, как и строка. Поэтому если вы создали обертку для числа 5, то не думайте, что вы сможете эту обертку изменить. Если вы начнете что-то менять и скажете я изменил, то скорее всего это просто новая обертка. Поэтому надо быть аккуратным. Потому что неконтролируемое создание объектов может привести только к одному – запустится сборка мусора. Вопрос: Что же нам делать, если мы хотим написать приличный код, а это все неизменяемо? Ответ: Работать с простыми типами. Вопрос: А строки? Ответ: Работать не со String, а с другими строками. Вот они – пожалуйста.
Вопрос: Что значит изменяемая строка? Ответ: Это значит, что создается один объект класса StringBuilder, который внутри за счет своих собственных операций эту строку меняет. Работает он медленнее, но сборки мусора нет, потому что объекта нет. Вы спросите, а каков размер этой строки? Ну, пока не кончилась ваша память. Так что особых проблем я не вижу. Если что-то не вмещается в вашу память – то это уже ваши проблемы, а не класса StringBuilder.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|