powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Очистка Formatter
16 сообщений из 16, страница 1 из 1
Очистка Formatter
    #39413517
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Formatter fmt = new Formatter();

while (rs.next()) {
    fmt.format("%1$s%2$s%3$s%4$s",.........));
    System.out.println(fmt.toString());
  
    fmt.      -  тут надо очистить fmt для повторного использования
}


это возможно?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413524
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то типа такого.
Код: java
1.
2.
3.
4.
StringBuilder sb = new StringBuilder();
Formatter fmt = new Formatter(sb);
...
sb.setLength(0);


Там вообще можно любой удобный Appendable взять, и использовать вывод из него вместо fmt.toString();
Читай исходный код.
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413529
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javadoc
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
StringBuilder s = new StringBuilder()
Formatter f = new Formatter(s, Locale.US)
f.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
print(s)

s = new StringBuilder()
f.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
print(s)



не?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413532
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, вопрос чисто концептуальный - так как в Java нет явных деструкторов, что произойдет если для очистки просто создать новый объект
Код: java
1.
Formatter fmt = new Formatter(); 


Произойдет утечка памяти или мусорщик поймет, что предыдущий объект больше не используется и утилизирует его?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413533
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто-то типа такого.
Код: java
1.
2.
3.
4.
StringBuilder sb = new StringBuilder();
Formatter fmt = new Formatter(sb);
...
sb.setLength(0);



Там вообще можно любой удобный Appendable взять, и использовать вывод из него вместо fmt.toString();
Читай исходный код.
как с StringBuilder работать я знаю.
Formatter по умолчанию использует StringBuilder.
а так это получается огород городить...
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413535
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008вопрос чисто концептуальный http://stackoverflow.com/questions/18766780/stringbuilder-reset-or-create-a-new
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413536
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netSQL2008вопрос чисто концептуальный http://stackoverflow.com/questions/18766780/stringbuilder-reset-or-create-a-new
Спасибо, это то, что нужно.
(немного неуютно чуcтвую себя в мире с new, но без delete)
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413537
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.net,

везде написано, что Formatter использует буфер
а StringBuilder выделяет память и при достижении границы - увеличивает.
про буфер ничего не говорится про увеличение, просто пишет в него.
есть разница?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413543
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадякак с StringBuilder работать я знаю.
Formatter по умолчанию использует StringBuilder.
а так это получается огород городить...
Зачем тогда спрашивал, мистер всезнайка?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413546
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008так как в Java нет явных деструкторов
А есть неявные?

SQL2008, что произойдет если для очистки просто создать новый объект
Код: java
1.
Formatter fmt = new Formatter(); 


Произойдет утечка памяти или мусорщик поймет, что предыдущий объект больше не используется и утилизирует его?
С какой радости должна быть утечка? Тут вообще новый объект, в новую переменную, где тут "старый"? Утечки происходят когда объекты регистрируются в глобальных переменных. В C# точно так же, ведь?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413551
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадявезде написано, что Formatter использует буфер

Прям таки "везде"? Вот открываем JavaDoc
https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html
В описание класса - ни слова про буфер. Только в описании методов, когда запись ведётся в файл или stream.

вадяа StringBuilder выделяет память и при достижении границы - увеличивает.
про буфер ничего не говорится про увеличение, просто пишет в него.
есть разница?
StringBuilder, возможно, и есть буфер про который ты читал. Но понять нельзя что за источник информации у тебя такой, который "везде".
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413557
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008Спасибо, это то, что нужно.
(немного неуютно чуcтвую себя в мире с new, но без delete)
Переиспользование объектов с коротким временим жизни это очень сомнительная оптимизация.
Во-первых объект может быть удалён при выходе из метода за счет escape analysis, что может оказаться дешевле чего чистки.
Многочисленные доступные для сборки объекты в GC удаляются скопом, если объектов много, то они быстро и умрут пачкой, что может быть на много быстрее чиски каждого отдельного объекта при переиспользовании. На поиск живых объектов количество "мертвых" не влияет.

Единственная весомая причина для переиспользования это экономия памяти.
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413574
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczStringBuilder, возможно, и есть буфер про который ты читал. Но понять нельзя что за источник информации у тебя такой, который "везде".
скорее всего так оно и есть. в тех описаниях видимо под "буфер" подразумевали то куда пишут. не расшифровав это.
тогда
Formatter fmt = new Formatter();
остаётся единственым вариантом переиспользования?
и чем тогда (в моём примере использовании ) выгода перед String.format ?
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413578
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи чем тогда (в моём примере использовании ) выгода перед String.format ?
Нет никакой выгоды. Ты её сам придумал.
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413593
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНет никакой выгоды. Ты её сам придумал.
не я придумал. мне пытались это доказать тута...
...
Рейтинг: 0 / 0
Очистка Formatter
    #39413616
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяи чем тогда (в моём примере использовании ) выгода перед String.format ?
Код: java
1.
2.
3.
    public static String format(String format, Object... args) {
        return new Formatter().format(format, args).toString();
    }
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Очистка Formatter
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]