Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
1

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

01.12.2012, 13:54. Просмотров 812. Ответов 9
Метки нет (Все метки)

Приветствую!

Возник такой теоретическо-практический вопрос, хотел бы его задать:
Выполняя обучающие уроки с одного из ресурсов, встретил такой способ вывода составного текста в 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()"?
Спасибо заранее.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 13:54
Ответы с готовыми решениями:

Текст из TextView перенести в другой TextView по нажатию Button
Люди, помогите плиз. Недавно начал ковырять программирование под Android. Хотел...

TextView txt = new TextView(this); - ошибка
Возникла проблема с динамическим создание TextView в цыкле, хотя в другом месте...

Разница в способах открытия файла
Доброго времени суток. Подскажите в чем разница использования кодов with...

Есть ли разница в способах присвоения значений аргументам функции?
В разных источниках наблюдал такую запись заданий аргументов. Например: ...

Разница вывода ответа математической операции С++ и С
Доброго времени суток. Ребята, не могу доделать программку. взял ее готовую с...

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

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

Прочитав также ваш ответ в моей соседней теме, прихожу к выводу, что уроки-уроками, а всё-таки надо "нарастить" базу с помощью developer.android.com, чтобы я мог аргументированно отвечать себе на подобные вопросы
Вообще то String StringBuilder StringBuffer это Java, но да, уроки уроками, но теория с документацией это MUST))
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
02.12.2012, 16:43 5
Цитата Сообщение от kievkao Посмотреть сообщение
в чём принципиальная разница
первый вариант меньше потребляет ресурсов.
0
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
02.12.2012, 23:29 6
Цитата Сообщение от V0v1k Посмотреть сообщение
первый вариант меньше потребляет ресурсов.
Не факт т.к. при компиляции структура конкатенции преобразовывается в структуру первого примера...
Люди делали тесты на производительность - однозначного ответа не было...
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.12.2012, 01:24 7
насколько я знаю (хотя все зависит от компилятора и все имеет свойство изменятся), второй вариант не просто преобразовывается в первый, а делает это 4 раза (по разу для каждой конкатенации), то есть будет создано 4 StringBuilder'a
0
lifestyle
Mobile Developer
234 / 230 / 18
Регистрация: 10.05.2009
Сообщений: 917
03.12.2012, 01:41 8
Цитата Сообщение от V0v1k Посмотреть сообщение
насколько я знаю (хотя все зависит от компилятора и все имеет свойство изменятся), второй вариант не просто преобразовывается в первый, а делает это 4 раза (по разу для каждой конкатенации), то есть будет создано 4 StringBuilder'a
Хм... возможно, но это все в процессе компиляции а не в runtime"е
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
03.12.2012, 02:20 9
ну да, преобразовано в процессе компиляции, а создание 4 объектов StringBuilder'a и 4 прогона по первому варианту будут в рантайме.
0
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
04.12.2012, 11:40  [ТС] 10
Ничего себе, - пару дней не зашёл, а тут полемика уже на две страницы..

С удовольствием почитаю
0
04.12.2012, 11:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2012, 11:40

О способах добавления данных в таблицы
Я практически не знакома с SQL, поэтому прошу не обижаться, если я назову...

расскажите о безопасных способах работы с портами I/O
день добрый, может быть кто-нибудь расскажет о том как безопасно работать с...

О способах загрузки или эмуляции DOS
..вообще не понимаю, как можно ориентироваться на эту хрень дос-бокс. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru