Форум программистов, компьютерный форум CyberForum.ru

Разница в способах вывода на TextView - Android

Войти
Регистрация
Восстановить пароль
 
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
01.12.2012, 13:54     Разница в способах вывода на TextView #1
Приветствую!

Возник такой теоретическо-практический вопрос, хотел бы его задать:
Выполняя обучающие уроки с одного из ресурсов, встретил такой способ вывода составного текста в TextView:

Java
1
2
3
4
DateField.setText(new StringBuilder()
        .append(CreateTime(mYear)).append("/")
        .append(CreateTime(mMonth+1)).append("/")
        .append(CreateTime(mDay)));
Ф-ция CreateTime преобразовывает числовое представление в строку.
Приведённый код выводит дату с разделителями.

Для эксперимента, по аналогии с C++ Builder'om, с которым я ранее работал, я написал так:

Java
1
DateField.setText(CreateTime(mYear) + "/" + CreateTime(mMonth+1) + "/" + CreateTime(mDay));
Оба варианта работают. И я не особо понимаю, для чего автор уроков реализовал более сложную конструкцию.
Мог бы кто-то вкратце разъяснить, в чём принципиальная разница между такими двумя способами вывода, и почему предпочтительно использовать конструкцию со "StringBuilder" и ".append()"?
Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 13:54     Разница в способах вывода на TextView
Посмотрите здесь:

Android Вывести значение в TextView
Android TextView и картинкака
Вывод в TextView Android
Android Цветной текст в textview
Android Как использовать TextView?
TextView авторазмер текста Android
TextColor textView Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
01.12.2012, 16:59     Разница в способах вывода на TextView #2
Конкретно в данном случае разницы никакой, по мне так первый вариант читабельнее второго.
Разница в реализациях следующая:
Второй вариант компилятор преобразит в первый, просто второй вариант проще в написании(короче).
Плюс могут возникнуть проблемы с использованием конкатенации(второй вариант - оператор "+") в цикле.
Вот данная дискуссия .
Теперь идем далее и открываем javadocs:
String - immutable
StringBuffer - mutable, synchronized (tread-safety)
StringBuilder - mutable, not-synchronized (not tread safety).
Вот и вся разница по большому счету между String vs StringBuilder
Вот интересный пост на эту тему.
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
01.12.2012, 22:22  [ТС]     Разница в способах вывода на TextView #3
lifestyle, большое спасибо за такой ёмкий ответ!

Прочитав также ваш ответ в моей соседней теме, прихожу к выводу, что уроки-уроками, а всё-таки надо "нарастить" базу с помощью developer.android.com, чтобы я мог аргументированно отвечать себе на подобные вопросы:)
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
01.12.2012, 23:42     Разница в способах вывода на TextView #4
Цитата Сообщение от kievkao Посмотреть сообщение
lifestyle, большое спасибо за такой ёмкий ответ!

Прочитав также ваш ответ в моей соседней теме, прихожу к выводу, что уроки-уроками, а всё-таки надо "нарастить" базу с помощью developer.android.com, чтобы я мог аргументированно отвечать себе на подобные вопросы
Вообще то String StringBuilder StringBuffer это Java, но да, уроки уроками, но теория с документацией это MUST))
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.12.2012, 16:43     Разница в способах вывода на TextView #5
Цитата Сообщение от kievkao Посмотреть сообщение
в чём принципиальная разница
первый вариант меньше потребляет ресурсов.
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
02.12.2012, 23:29     Разница в способах вывода на TextView #6
Цитата Сообщение от V0v1k Посмотреть сообщение
первый вариант меньше потребляет ресурсов.
Не факт т.к. при компиляции структура конкатенции преобразовывается в структуру первого примера...
Люди делали тесты на производительность - однозначного ответа не было...
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.12.2012, 01:24     Разница в способах вывода на TextView #7
насколько я знаю (хотя все зависит от компилятора и все имеет свойство изменятся), второй вариант не просто преобразовывается в первый, а делает это 4 раза (по разу для каждой конкатенации), то есть будет создано 4 StringBuilder'a
lifestyle
Mobile Developer
 Аватар для lifestyle
231 / 227 / 4
Регистрация: 10.05.2009
Сообщений: 917
03.12.2012, 01:41     Разница в способах вывода на TextView #8
Цитата Сообщение от V0v1k Посмотреть сообщение
насколько я знаю (хотя все зависит от компилятора и все имеет свойство изменятся), второй вариант не просто преобразовывается в первый, а делает это 4 раза (по разу для каждой конкатенации), то есть будет создано 4 StringBuilder'a
Хм... возможно, но это все в процессе компиляции а не в runtime"е
V0v1k
1157 / 981 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.12.2012, 02:20     Разница в способах вывода на TextView #9
ну да, преобразовано в процессе компиляции, а создание 4 объектов StringBuilder'a и 4 прогона по первому варианту будут в рантайме.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2012, 11:40     Разница в способах вывода на TextView
Еще ссылки по теме:

Не изменяется текст в TextView Android
Android Размер шрифта, TextView
IsSelectable textview in ScrollView Android
Обновление текста в TextView Android
Анимация textview Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
04.12.2012, 11:40  [ТС]     Разница в способах вывода на TextView #10
Ничего себе, - пару дней не зашёл, а тут полемика уже на две страницы..

С удовольствием почитаю
Yandex
Объявления
04.12.2012, 11:40     Разница в способах вывода на TextView
Ответ Создать тему
Опции темы

Текущее время: 22:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru