Блог
Меню сайта

Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Календарь
«  Декабрь 2013  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Приветствую Вас, Гость · RSS 24.09.2017, 22:17

Главная » 2013 » Декабрь » 12 » Класс Formatter в Java
17:02
Класс Formatter в Java
Базовой частью поддержки создания форматированного вывода в языке Java служит класс Formatter, включенный в пакет java.util. Он обеспечивает преобразования формата (format conversions) позволяющие выводить числа, строки и время и даты практически в любом понравившемся вам формате. Класс функционирует подобно функции printf () языков C/C++, а значит, если Вы знакомы с этими языками, научиться использовать класс Formatter будет очень легко. Кроме класса Formatter в Java 2 версии 5.0 добавлен метод printf () для классов printstream и printwriter. Метод printf () автоматически использует класс Formatter и предлагает  функциональные средства почти один к одному совпадающие с возможностями функции printf () языков C/C++, таким образом, облегчая в дальнейшем преобразование кода на C/C++ в код на языке Java. Прежде чем Вы сможете использовать класс Formatter для форматирования вывода, вам придется создать объект типа Formatter. В общем, класс Formatter преобразует двоичную форму представления данных, используемых программой, в форматированный текст. Он сохраняет форматированный текст в буфере, содержимое которого Ваша программа может получить в любой нужный момент. Можно предоставить классу Formatter автоматическую поддержку этого буфера, либо явно задать его, когда создается объект класса Formatter. Существует возможность сохранения буфера класса Formatter в файле.

В классе Formatter определено много конструкторов, которые позволяют создавать объекты этого класса различными способами. Далее приведены некоторые их образцы.


      Formatter()
    Formatter(Appendable buf)
    Formatter(Appendable buf, Locale loc)
    Formatter(String filename)
      throws FileNotFoundException
    Formatter(String filename, String charset)
              throws FileNotFoundException, unsupportedEncodingException
    Formatter(File outF)
              throws FileNotFoundException
    Formatter(OutStream outStrm)

 
 


В приведенных образцах buf задает буфер для форматированного вывода. Если параметр buf равен null, класс Formatter автоматически размещает объект типа StringBuilder для хранения форматированного вывода. Параметр loc определяет региональные и языковые настройки. Если никаких настроек не задано, используются настройки по умолчанию. Параметр filename задаст имя файла, который получит форматированный вывод. Параметр charset определяет кодировку. Если она не задана, используется кодировка, установленная по умолчанию. Параметр outF передаст ссылку на открытый файл, в котором будет храниться форматированный вывод. В параметре outStrm передается ссылка на поток вывода, который будет получать отформатированные данные. Если используется файл, выходные данные также записываются в файл. Возможно, наиболее широко используемый конструктор, первый в приведенном перечне, — это конструктор без параметров. Он использует региональные настройки, принятые по умолчанию, и автоматически размещает объект класса StringBuilder для хранения форматированного вывода.

После создания объекта класса Formatter Вы можете его применить для формирования форматированной строки. Для этого используйте метод format (). В следующей строке приведена самая общеупотребительная его версия

Formatter format(String fmtString, Object...args)

Параметр fmtString состоит из элементов двух типов. Первый тип формируется из символов, которые просто копируются в буфер вывода. Второй тип содержит спецификаторы формата (format specifiers), определяющие способ отображения последующих аргументов.
Простейший спецификатор начинается со знака процента, за которым следует преобразующий спецификатор формата (format conversion specifier). Все преобразующие спецификаторы формата состоят из одиночных символов.
Например, спецификатор формата для данных с плавающей точкой — %f. Как правило, спецификаторов формата должно быть столько же, сколько аргументов первого типа, и соответствие спецификаторов формата аргументам первого типа устанавливается в направлении слева направо. Рассмотрим приведенный далее фрагмент:

Formatter fmt = new Formatter ();
fmt.format("Formatting %s is easy %d %£",  "with Java", 10, 98.6);

в нем создается объект класса Formatter, содержащий следующую строку:

Formatting with Java is easy 10 98.600000

В данном примере спецификаторы формата: %s, %d и %f, замещаются аргументами, следующими далее в строке форматирования. Таким образом, спецификатор %s заменен строкой "with Java", спецификатор %d — числом 10, а спецификатор %f — числом 98.6. Все остальные символы используются без изменения. Как Вы могли догадаться, спецификатор %s задает строку, а спецификатор %<а — целое число. Как уже упоминалось, спецификатор %f задает значение с плавающей точкой.
Метод format() принимает множество разных спецификаторов формата, перечисленных в табл. 9.2. Обратите внимание на то, что у многих из них есть две формы представления: в верхнем и нижнем регистрах. Когда используется спецификатор, набранный в верхнем регистре, отображаются заглавные буквы. В остальном спецификаторы, набранные в верхнем и нижнем регистрах, выполняют одни те же преобразования, Важно знать, что язык Java контролирует соответствие каждого спецификатора формата типу связанного с ним аргумента. Если это соответствие нарушено, генерируется исключение типа IllegalFormatException.
После форматирования строки Вы можете получить ее, вызвав метод toString(). Если продолжить предыдущий пример, оператор, приведенный в следующей строке, получает отформатированную строку, содержащуюся в объекте fmt:
String str = fmt.toString();

Конечно, если Вы хотите просто вывести на экран отформатированную строку, не нужно ее сначала присваивать объекту типа String. Когда объект класса  Formatter   передается,   например,   в   метод  println(),   метод toString() вызывается автоматически.
Просмотров: 1524 | Добавил: livebook | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Copyright exshark © 2017
Сделать бесплатный сайт с uCoz