Formatter Класс

Определение

Интерпретатор для строк формата в стиле printf.

[Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)]
public sealed class Formatter : Java.Lang.Object, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ICloseable, Java.IO.IFlushable
[<Android.Runtime.Register("java/util/Formatter", DoNotGenerateAcw=true)>]
type Formatter = class
    inherit Object
    interface ICloseable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface IFlushable
Наследование
Formatter
Атрибуты
Реализации

Комментарии

Интерпретатор для строк формата в стиле printf. Этот класс обеспечивает поддержку выравнивания и выравнивания макета, общие форматы для числовых, строковых данных и данных даты и времени, а также выходные данные для конкретного языкового стандарта. Поддерживаются распространенные типы Java, такие как byte, java.math.BigDecimal BigDecimalи Calendar . Ограниченная настройка форматирования для произвольных типов пользователей предоставляется через Formattable интерфейс .

Модули форматирования не обязательно являются безопасными для многопоточного доступа. Потокобезопасность необязательна и является ответственностью пользователей методов в этом классе.

Форматированная печать для языка Java в значительной степени вдохновляется printfC . Хотя строки формата похожи на C, были внесены некоторые настройки для адаптации языка Java и использования некоторых его функций. Кроме того, форматирование Java является более строгим, чем в C; Например, если преобразование несовместимо с флагом, будет выдано исключение. В C неприменимые флаги игнорируются автоматически. Таким образом, строки формата предназначены для того, чтобы быть узнаваемыми для программистов C, но не обязательно полностью совместимы с C.

Примеры ожидаемого использования:

<blockquote>

StringBuilder sb = new StringBuilder();
              // Send all output to the Appendable object sb
              Formatter formatter = new Formatter(sb, Locale.US);

              // Explicit argument indices may be used to re-order output.
              formatter.format("%4$2s %3$2s %2$2s %1$2s", "a", "b", "c", "d")
              // -&gt; " d  c  b  a"

              // Optional locale as the first argument can be used to get
              // locale-specific formatting of numbers.  The precision and width can be
              // given to round and align the value.
              formatter.format(Locale.FRANCE, "e = %+10.4f", Math.E);
              // -&gt; "e =    +2,7183"

              // The '(' numeric flag may be used to format negative numbers with
              // parentheses rather than a minus sign.  Group separators are
              // automatically inserted.
              formatter.format("Amount gained or lost since last statement: $ %(,.2f",
                               balanceDelta);
              // -&gt; "Amount gained or lost since last statement: $ (6,217.58)"

</blockquote>

Существуют удобные методы для распространенных запросов форматирования, как показано в следующих вызовах:

<blockquote>

// Writes a formatted string to System.out.
              System.out.format("Local time: %tT", Calendar.getInstance());
              // -&gt; "Local time: 13:34:18"

              // Writes formatted output to System.err.
              System.err.printf("Unable to open file '%1$s': %2$s",
                                fileName, exception.getMessage());
              // -&gt; "Unable to open file 'food': No such file or directory"

</blockquote>

Как и в sprintf(3)C, строки можно отформатировать с помощью статического метода String#format(String,Object...) String.format:

<blockquote>

// Format a string containing a date.
              import java.util.Calendar;
              import java.util.GregorianCalendar;
              import static java.util.Calendar.*;

              Calendar c = new GregorianCalendar(1995, MAY, 23);
              String s = String.format("Duke's Birthday: %1$tb %1$te, %1$tY", c);
              // -&gt; s == "Duke's Birthday: May 23, 1995"

</blockquote>

<h3>"org">Organization</h3>

Эта спецификация состоит из двух разделов. В первом разделе Сводка рассматриваются основные понятия форматирования. Этот раздел предназначен для пользователей, которые хотят быстро приступить к работе и знакомы с форматируемой печатью на других языках программирования. Во втором разделе , Сведения, рассматриваются конкретные сведения о реализации. Он предназначен для пользователей, которым требуется более точное описание поведения форматирования.

<h3>"summary">Summary</h3>

В этом разделе представлен краткий обзор концепций форматирования. Подробные сведения о поведении см. в разделе Сведения.

<h4>"syntax">Format String Syntax</h4>

Для каждого метода, который создает форматированные выходные данные, требуется строка форматирования и список аргументов. Строка формата может содержать фиксированный String текст и один или несколько описателей внедренного формата. Рассмотрим следующий пример.

<blockquote>

Calendar c = ...;
              String s = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);

</blockquote>

Эта строка формата является первым аргументом format метода . Он содержит три описателя формата "%1$tm", "%1$te" и "%1$tY", которые указывают способ обработки аргументов и место их вставки в текст. Остальные части строки формата представляют собой фиксированный текст, включая "Dukes Birthday: " и любые другие пробелы или знаки препинания.

Список аргументов состоит из всех аргументов, переданных методу после строки форматирования. В приведенном выше примере список аргументов имеет размер 1 и состоит из java.util.Calendar Calendar объекта c.

<ul>

<Li> Описатели формата для общих, символьных и числовых типов имеют следующий синтаксис:

<blockquote>

%[argument_index$][flags][width][.precision]conversion

</blockquote>

Необязательный argument_index представляет собой десятичное целое число, указывающее положение аргумента в списке аргументов. На первый аргумент ссылается "1$", на второй — "2$" и т. д.

Необязательные флаги — это набор символов, которые изменяют формат вывода. Набор допустимых флагов зависит от преобразования.

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

Необязательная точность — это неотрицательное десятичное целое число, которое обычно используется для ограничения числа символов. Конкретное поведение зависит от преобразования.

Обязательное преобразование — это символ, указывающий, как должен быть отформатирован аргумент. Набор допустимых преобразований для заданного аргумента зависит от типа данных аргумента.

<Li> Описатели формата для типов, которые используются для представления дат и времени, имеют следующий синтаксис:

<blockquote>

%[argument_index$][flags][width]conversion

</blockquote>

Необязательные argument_index, флаги и ширина определены, как описано выше.

Обязательное преобразование представляет собой последовательность из двух символов. Первый символ — или 't''T'. Второй символ указывает используемый формат. Эти символы похожи на символы, но не полностью идентичны тем, которые определены в GNU date и POSIX strftime(3c).

<li> Описатели формата, которые не соответствуют аргументам, имеют следующий синтаксис:

<blockquote>

%[flags][width]conversion

</blockquote>

Необязательные флаги и ширина определяются, как описано выше.

Обязательное преобразование — это символ, указывающий содержимое, которое будет вставлено в выходные данные.

</ul>

<Преобразования <h4> /h4>

Преобразования делятся на следующие категории:

<Пр>

<li><b>General</b> — может применяться к любому типу аргумента

<li>b Character/b> — может применяться к базовым типам, представляющим символы Юникода: char, Character, , shortBytebyte, и .Short<>< Это преобразование также может применяться к типам int и Integer при Character#isValidCodePoint возврате<true значения li<>b>Numeric</b>

<Пр>

<li><b>Integral</b> — может применяться к целочисленным типам Java: byte, Byte, short, Shortint и Integer, Longlong, и java.math.BigInteger BigInteger (но не char к или Character).

<li><b>Floating Point</b> — может применяться к типам с плавающей запятой Java: float, Float, double, Doubleи java.math.BigDecimal BigDecimal</ol.>

<li><b>Date/Time</b> — может применяться к типам Java, которые могут кодировать дату или время: long, Long, CalendarDate и TemporalAccessor TemporalAccessor<li><b>Percent</b> — создает литерал '%' ('&#92;u0025').

<li><b>Line Separator</b> — создает разделитель линий для конкретной платформы.

</Пр>

Для преобразования категорий "Общие", "Символ", "Числовой", "Целочисленный" и "Дата/время", если не указано иное, если аргумент аргумента имеет значение null, результатом будет "null".

В следующей таблице перечислены поддерживаемые преобразования. Преобразования, обозначаемые символом верхнего регистра (т. е. 'B', 'H', 'E''C''G''S''X', 'A', и 'T'), совпадают с преобразованиями для соответствующих символов преобразования в нижнем регистре, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами преобладающего .java.util.Locale Locale Если явный языковой стандарт не указан при построении экземпляра или в качестве параметра для его вызова метода, java.util.Locale.Category#FORMAT default locale используется .

<table class="striped"><подпись style="display:none">genConv</подпись<> thead<>tr><th область="col" style="vertical-align:bottom"> Conversion <th область="col" style="vertical-align:bottom"> Argument Category <th область="col" style="vertical-align:bottom" > Description </thead><tbody><tr th><область="row" style="vertical-align:top">'b',<'B' td style="vertical-align:top"> general <td> Если аргумент аргумента имеет значение null, то результатом будет "".false Если аргумент имеет значение boolean или Boolean, то результатом является строка, возвращаемая String#valueOf(boolean) String.valueOf(arg). В противном случае результат будет "true".

<tr><th область="row" style="vertical-align:top"'h'>, 'H'<td style="vertical-align:top"> general <td> Результат получается путем вызова Integer.toHexString(arg.hashCode()).

<tr><th область="row" style="vertical-align:top"'s'>, 'S'<td style="vertical-align:top"> general <td> Если arg реализует Formattable, то Formattable#formatTo arg.formatTo вызывается . В противном случае результат получается путем вызова arg.toString().

<tr><th область="row" style="vertical-align:top">'c', 'C'<td style="vertical-align:top"> character <td> Результатом является символ Юникода

<tr><th область="row" style="vertical-align:top"><'d'td style="vertical-align:top"> integral <td> Результат отформатирован как десятичное целое число

<tr><th область="row" style="vertical-align:top"><'o'td style="vertical-align:top"> integral <td> Результат отформатирован как восьмеричное целое число

<tr><th область="row" style="vertical-align:top">'x', 'X'<td style="vertical-align:top"> integral <td> Результат отформатирован в виде шестнадцатеричного целого числа

<tr><th область="row" style="vertical-align:top">'e', 'E'<td style="vertical-align:top"> с плавающей запятой <td> Результат форматируется в виде десятичного числа в компьютерной научной нотации

<tr><th область="row" style="vertical-align:top"><'f'td style="vertical-align:top"> с плавающей запятой <td> Результат отформатирован в виде десятичного числа

<tr><th область="row" style="vertical-align:top">'g', 'G'<td style="vertical-align:top"> с плавающей запятой <td>. Результат форматируется с использованием компьютеризованной научной нотации или десятичного формата в зависимости от точности и значения после округления.

<tr><th область="row" style="vertical-align:top">'a', 'A'<td style="vertical-align:top"> с плавающей запятой <td> Результат форматируется в виде шестнадцатеричного числа с плавающей запятой со знаком и экспонентой. Это преобразование b <>не< поддерживается> для BigDecimal типа , несмотря на то, что последний находится в категории аргументов с плавающей запятой.

<tr><th область="row" style="vertical-align:top">'t', 'T'<td style="vertical-align:top"> date/time <td> Prefix для символов преобразования даты и времени. См. раздел Преобразования даты и времени.

<tr><th область="row" style="vertical-align:top"'%'><td style="vertical-align:top"> percent <td> Результатом является литерал '%' ()'&#92;u0025'

<tr><th область="row" style="vertical-align:top"><'n'td style="vertical-align:top"> разделитель <линий td>. Результатом является разделитель линий для конкретной платформы

</tbody></table>

Все символы, явно не определенные как преобразования, являются недопустимыми и зарезервированы для будущих расширений.

<h4>"dt">Преобразование< даты и времени/h4>

Для преобразований и 'T' определены 't' следующие символы преобразования даты и времени. Типы похожи на типы, но не полностью идентичны тем, которые определены в GNU date и POSIX strftime(3c). Для доступа к функциям Java предоставляются дополнительные типы преобразования (например 'L' , для миллисекунд в секунду).

Для форматирования времени используются следующие символы преобразования:

<table class="striped">подпись style="display:none">time</подпись<> tbody<>tr><th область="row" style="vertical-align:top">'H'<td> Час дня для 24-часовых часов, отформатированный в виде двух цифр с нулем в начале по мере необходимости, т. е. . 00 - 23<

<tr><th область="row" style="vertical-align:top"><'I'td> Hour для 12-часовых часов, отформатированных как две цифры с начальным нулем при необходимости, т. е. . 01 - 12

<tr><th область="row" style="vertical-align:top"><'k'td> Час дня для 24-часовых часов, т. е. . 0 - 23

<tr><th область="row" style="vertical-align:top"><'l'td> Hour для 12-часовых часов, т. е. . 1 - 12

<tr><th область="row" style="vertical-align:top"><'M'td> Minute в течение часа, отформатированного в виде двух цифр с нулем в начале по мере необходимости, т. е. . 00 - 59

<tr><th область="row" style="vertical-align:top"'S'<>td> Seconds within the minute, отформатированный в виде двух цифр с начальным нулем при необходимости, т. е. 00 - 60 ("60" — специальное значение, необходимое для поддержки корректировочных секунд).

<tr><th область="row" style="vertical-align:top"><'L'td> Millisecond во втором формате в виде трех цифр с начальными нулями при необходимости, т. е. . 000 - 999

<tr><th область="row" style="vertical-align:top"><'N'td> Nanosecond во втором, отформатированном в виде девяти цифр с начальными нулями при необходимости, т. е. . 000000000 - 999999999

<tr><th область="row" style="vertical-align:top"><'p'td> locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon маркер в нижнем регистре, например""am или "pm". Использование префикса 'T' преобразования приводит к выводу в верхнем регистре.

<tr><th область="row" style="vertical-align:top"'z'><td> RFC 822 style numeric time zone offset from GMT, например . -0800 Это значение будет корректироваться при необходимости для летнего времени. Для long, Longи Date используется часовой пояс TimeZone#getDefault() по умолчанию для этого экземпляра виртуальной машины Java.

<tr><th область="row" style="vertical-align:top"<>'Z'td> Строка, представляющая сокращение часового пояса. Это значение будет корректироваться при необходимости для летнего времени. Для long, Longи Date используется часовой пояс TimeZone#getDefault() по умолчанию для этого экземпляра виртуальной машины Java. Языковой стандарт модуля форматирования заместит языковой стандарт аргумента (если таковой есть).

<tr><th область="row" style="vertical-align:top"><'s'td> Seconds с начала эпохи, начиная с 1 января 1970 00:00:00 года в формате UTC, т. е. Long.MIN_VALUE/1000 до .Long.MAX_VALUE/1000

<tr><th область="row" style="vertical-align:top"><'Q'td> Milliseconds с начала эпохи, начиная с 1 января 1970 00:00:00 года в формате UTC, т. е. Long.MIN_VALUE до .Long.MAX_VALUE

</tbody></table>

Для форматирования дат используются следующие символы преобразования:

<table class="striped"><подпись style="display:none">date</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"'B'<>td> locale-specific java.text.DateFormatSymbols#getMonths полное название месяца, например "January", . "February"

<tr><th область="row" style="vertical-align:top"'b'<>td> locale-specific java.text.DateFormatSymbols#getShortMonths сокращенное название месяца, например "Jan", . "Feb"

<tr><th область="row" style="vertical-align:top"><'h'td> Совпадает с .'b'

<tr><th область="row" style="vertical-align:top"'A'<>td> locale-specific name of the java.text.DateFormatSymbols#getWeekdays day of the week, например "Sunday", "Monday"<tr><th область="row" style="vertical-align:top"<>'a'td-specific> locale-specific name of the java.text.DateFormatSymbols#getShortWeekdays day of the week, например "Sun", "Mon"<tr><th область="row" style="vertical-align:top">'C'<td> Четырехзначный год, разделенный на 100, отформатированный как две цифры с начальным нулем при необходимости, т. е. 00 - 99<tr th><область="row" style="vertical-align:top"<>'Y'td> Year, отформатированный как минимум как четыре цифры с начальными нулями при необходимости, например 0092 равно 92 CE для григорианского календаря.

<tr><th область="row" style="vertical-align:top"><'y'td> Последние две цифры года, отформатированные начальными нулями при необходимости, т. е. . 00 - 99

<tr><th область="row" style="vertical-align:top"><'j'td> Day of Year, отформатированный в виде трех цифр с начальными нулями при необходимости, например 001 - 366 для григорианского календаря.

<tr><th область="row" style="vertical-align:top"><'m'td> Month, отформатированный как две цифры с начальными нулями при необходимости, т. е. . 01 - 13

<tr><th область="row" style="vertical-align:top"'d'<>td> Day of month, отформатированный в виде двух цифр с начальными нулями при необходимости, т. е. 01 - 31<tr><th область="row" style="vertical-align:top"'e'<>td> Day of month, отформатированный в виде двух цифр, т.е. . 1 - 31

</tbody></table>

Следующие символы преобразования используются для форматирования общих композиций даты и времени.

<table class="striped"><подпись style="display:none">composites</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'R'<td> Time formatted for the 24-hour clock as<"%tH:%tM" tr th><область="row" style="vertical-align:top"'T'<>td> Time formatted for the 24-hour clock as ."%tH:%tM:%tS"

<tr><th область="row" style="vertical-align:top"><'r'td> Time formatted for the 12-hour clock as ."%tI:%tM:%tS %Tp" Расположение маркера утром или во второй половине дня ('%Tp') может зависеть от языкового стандарта.

<tr><th область="row" style="vertical-align:top"><'D'td> Date formatted as ."%tm/%td/%ty"

<tr><th область="row" style="vertical-align:top"'F'><td> ISO 8601 дата завершения в формате ."%tY-%tm-%td"

<tr><th область="row" style="vertical-align:top"'c'<>td> Дата и время в формате "%ta %tb %td %tT %tZ %tY", например . "Sun Jul 20 16:17:00 EDT 1969"

</tbody></table>

Все символы, явно не определенные как суффиксы преобразования даты и времени, являются недопустимыми и зарезервированы для будущих расширений.

<h4> Flags </h4>

В следующей таблице перечислены поддерживаемые флаги. y означает, что флаг поддерживается для указанных типов аргументов.

<table class="striped">подпись style="display:none">genConv</подпись<> thead><tr><th область="col" style="vertical-align:bottom"> Flag <th область="col" style="vertical-align:bottom"> General <th область="col" style="vertical-align:bottom"> Character<<th область="col" style="vertical-align:bottom"> Integral <th область="col" style="vertical-align:bottom"> Floating Point <th область="col" style="vertical-align:bottom"> Date/Time <th область="col" style="vertical-align:bottom"> Description </thead><tbody><tr><th область="row"> '-' <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> y <td>.

<tr><th область="row"> '#' <td style="text-align:center; vertical-align:top"> y<sup>1</sup><td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y<sup>3</sup><td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> - <td> Результат должен использовать зависимую от преобразования альтернативную форму

<tr><th область="row"> '+' <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y<sup>4</sup<>td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> - <td> Результат всегда будет включать знак

<tr><th область="row"> '  ' <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y<sup>4</sup<>td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> - <td>. Результат будет включать в себя начальное пространство для положительных значений

<tr><th область="row"> '0" <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> y <td style="text-align:center; vertical-align:top"> - <td> Результат будет нулевой

<tr><th область="row"> ',' <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y<sup>2</sup><td style="text-align:center; vertical-align:top"> y<sup>5</sup><td style="text-align:center; vertical-align:top"> - <td> Результат будет включать разделители<группирования java.text.DecimalFormatSymbols#getGroupingSeparator tr><th область="row"> '(' <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> - <td style="text-align:center; vertical-align:top"> y<sup>4</sup<>td style="text-align:center; vertical-align:top"> y<sup>5</sup<>td style="text-align:center"> — <td> Результат заключает отрицательные числа в круглые скобки

</tbody></table>

<sup>1/sup> зависит от определения Formattable<.

<sup>2</sup> Только для 'd' преобразования.

<sup>3</sup> только для 'o'преобразований , 'x'и 'X' .

<sup>4/sup> Для 'd'преобразований , 'o', 'x'и 'X' , примененных или примененных к java.math.BigInteger BigIntegerbyte'd' , Byte, short, Shortи longintInteger, и .Long<

<sup>5</sup> только для 'e'преобразований , 'E', 'f', 'g'и 'G' .

Все символы, явно не определенные как флаги, являются незаконными и зарезервированы для будущих расширений.

<h4> Ширина </h4>

Ширина — это минимальное число символов, записываемых в выходные данные. Для преобразования разделителя строк ширина не применяется; Если он указан, будет выдано исключение.

<Точность <h4> /h4>

Для общих типов аргументов точность — это максимальное число символов, записываемых в выходные данные.

Для преобразований 'a'с плавающей запятой , 'A', 'e', 'E'и 'f' точность — это число цифр после радиксовой точки. Если преобразование равно 'g' или 'G', то точность — это общее число цифр в полученной величине после округления.

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

<Индекс <аргумента h4> /h4>

Индекс аргумента — это десятичное целое число, указывающее положение аргумента в списке аргументов. На первый аргумент ссылается "1$", на второй — "2$" и т. д.

Другой способ ссылаться на аргументы по позиции — использовать '<' флаг ('&#92;u003c'), который приводит к повторному использованию аргумента для предыдущего описателя формата. Например, следующие два оператора будут выдавать идентичные строки:

<blockquote>

Calendar c = ...;
              String s1 = String.format("Duke's Birthday: %1$tm %1$te,%1$tY", c);

              String s2 = String.format("Duke's Birthday: %1$tm %&lt;te,%&lt;tY", c);

</blockquote>

<hr><h3>"detail">Details</h3>

Этот раздел предназначен для предоставления сведений о поведении при форматировании, включая условия и исключения, поддерживаемые типы данных, локализацию и взаимодействие между флагами, преобразованиями и типами данных. Общие сведения о принципах форматирования см. в разделе Сводка.

Любые символы, явно не определенные как преобразования, суффиксы преобразования даты и времени или флаги, являются недопустимыми и зарезервированы для будущих расширений. Использование такого символа в строке формата вызовет UnknownFormatConversionException исключение или UnknownFormatFlagsException .

Если описатель формата содержит ширину или точность с недопустимым значением или не поддерживается иным образом, IllegalFormatWidthException будет выдано значение или IllegalFormatPrecisionException соответственно.

Если описатель формата содержит символ преобразования, неприменимый IllegalFormatConversionException к соответствующему аргументу, будет выдано исключение .

Все указанные исключения могут создаваться любым из format методов , Formatter а также любыми format удобными методами, такими как String#format(String,Object...) String.format и java.io.PrintStream#printf(String,Object...) PrintStream.printf.

Если аргумент аргумента аргумента имеет nullзначение , то для преобразования категории "Общий", "Символ", "Числовой", "Целочисленный" и преобразования даты и времени, если не указано иное, результатом будет "". null

Преобразования, обозначаемые символом верхнего регистра (т. е. 'B', 'H', 'S', 'C', 'X''E', 'G', 'A'и 'T'), совпадают с преобразованиями соответствующих символов нижнего регистра, за исключением того, что результат преобразуется в верхний регистр в соответствии с правилами преобладающего java.util.Locale Locale. Если явный языковой стандарт не указан при создании экземпляра или в качестве параметра для его вызова метода, java.util.Locale.Category#FORMAT default locale используется .

<h4>"dgen">General</h4>

К любому типу аргумента можно применить следующие общие преобразования:

<table class="striped"><подпись style="display:none">dgConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"<'b'>td style="vertical-align:top"><'&#92;u0062'td> Производит либо "true", либо "false", как возвращено .Boolean#toString(boolean)

Если аргумент имеет значение null, то результатом будет "false". Если аргументом является boolean или Boolean, результатом будет строка, возвращаемая String#valueOf(boolean) String.valueOf(). В противном случае результатом будет "true".

'#' Если флаг задан, FormatFlagsConversionMismatchException будет выдано исключение .

<tr><th область="row" style="vertical-align:top"'B'><td style="vertical-align:top"'&#92;u0042'<>td> Вариант верхнего регистра .'b'

<tr><th область="row" style="vertical-align:top">'h'<td style="vertical-align:top"'&#92;u0068'><td> Создает строку, представляющую значение хэш-кода объекта.

Результат получается путем вызова Integer.toHexString(arg.hashCode()).

'#' Если флаг задан, FormatFlagsConversionMismatchException будет выдано исключение .

<tr><th область="row" style="vertical-align:top"'H'><td style="vertical-align:top"'&#92;u0048'<>td> Вариант верхнего регистра .'h'

<tr><th область="row" style="vertical-align:top">'s'<td style="vertical-align:top"'&#92;u0073'><td> Создает строку.

Если аргумент реализует Formattable, вызывается его Formattable#formatTo formatTo метод . В противном случае результат получается путем вызова метода аргумента toString() .

'#' Если флаг задан, а аргумент не Formattable является , то FormatFlagsConversionMismatchException будет выдано исключение .

<tr><th область="row" style="vertical-align:top"'S'><td style="vertical-align:top"'&#92;u0053'<>td> Вариант верхнего регистра .'s'

</tbody></table>

Следующие флаги dFlags> применяются к общим преобразованиям:

<table class="striped"><подпись style="display:none">dFlags</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'-'<td style="vertical-align:top"'&#92;u002d'><td> Left оправдывает выходные данные. Пробелы ('&#92;u0020') будут добавлены в конце преобразованного значения по мере необходимости для заполнения минимальной ширины поля. Если ширина не указана, MissingFormatWidthException возникает исключение . Если этот флаг не задан, выходные данные будут оправданы по правому краю.

<tr><th область="row" style="vertical-align:top">'#'<td style="vertical-align:top"'&#92;u0023'><td> Требуется, чтобы выходные данные использовали альтернативную форму. Определение формы задается преобразованием.

</tbody></table>

Ширина "genWidth"> — это минимальное число символов, записываемых в выходные данные. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены '&nbsp;&nbsp;' ('&#92;u0020'), пока общее количество символов не будет равно ширине. По умолчанию заполнение находится слева. '-' Если флаг задан, то заполнение будет справа. Если ширина не указана, минимальное значение отсутствует.

Точность — это максимальное число символов, записываемых в выходные данные. Точность применяется до ширины, поэтому выходные данные будут усечены до precision символов, даже если ширина больше точности. Если точность не указана, количество символов не ограничено явным образом.

<h4>"dchar">Character</h4>

Это преобразование может применяться к char и Character. Он также может применяться к типам byte, Byte, shortи Short, и Integer при intCharacter#isValidCodePoint возврате true. Если он возвращает , false то IllegalFormatCodePointException будет выдано исключение .

<table class="striped"><подпись style="display:none">charConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'c'<td style="vertical-align:top"'&#92;u0063'><td> Форматирует аргумент в виде символа Юникода, как описано в разделе Представление символов Юникода. Это может быть более одного 16-разрядного в char случае, когда аргумент представляет дополнительный символ.

'#' Если флаг задан, FormatFlagsConversionMismatchException будет выдано исключение .

<tr><th область="row" style="vertical-align:top"'C'><td style="vertical-align:top"'&#92;u0043'<>td> Вариант верхнего регистра .'c'

</tbody></table>

Применяется '-' флаг, определенный для общих преобразований. '#' Если флаг задан, FormatFlagsConversionMismatchException будет выдано исключение .

Ширина определяется как для общих преобразований.

Точность неприменима. Если точность указана, будет выдано IllegalFormatPrecisionException исключение .

<h4>"dnum">Numeric</h4>

Числовые преобразования делятся на следующие категории:

<Пр>

<li>b Byte, Short, Integer и Long</b><li<>b>BigInteger</b li><<>b>Float и Double</b><li<>b b>BigDecimal</b ol><><>

Числовые типы будут отформатированы в соответствии со следующим алгоритмом:

<b>"L10nAlgorithm"> Алгоритм локализации< чисел/b>

После получения цифр для целочисленной части, дробной части и экспоненты (в соответствии с типом данных) применяется следующее преобразование:

<Пр>

<li> Каждая цифра d в строке заменяется цифрой, вычисленной относительно текущего языкового стандарта java.text.DecimalFormatSymbols#getZeroDigit() нулевой цифройz; то есть d - '0' +  z.

<Li> При наличии десятичного разделителя заменяется десятичный разделитель java.text.DecimalFormatSymbols#getDecimalSeparator.

<Li> Если ',' задан флаг ('&#92;u002c') "L10nGroup">, то для конкретного языкового стандарта java.text.DecimalFormatSymbols#getGroupingSeparator вставляется разделитель группирования путем сканирования целочисленной части строки от наименее значимых до наиболее значимых цифр и вставки разделителя через интервалы, определенные размером группировки java.text.DecimalFormat#getGroupingSize().

<Li> Если '0' флаг задан, то после символа знака (при наличии) и перед первой ненулевой цифрой вставляются нулевые цифры java.text.DecimalFormatSymbols#getZeroDigit() после символа знака , если таковой имеется, и до первой ненулевой цифры, пока длина строки не будет равна запрошенной ширине поля.

<Li> Если значение отрицательное и '(' флаг задан, то в начале '(' добавляется ('&#92;u0028') и ')' добавляется ('&#92;u0029').

<Li> Если значение является отрицательным (или отрицательным нулем с плавающей запятой) и '(' флаг не задан, то в начале '-' добавляется ('&#92;u002d').

<Li> Если '+' флаг задан и значение является положительным или нулевым (или положительным нулем с плавающей запятой), то в начале '+' будет добавлен ('&#92;u002b').

</Пр>

Если значение равно NaN или положительной бесконечности, будут выведены литеральные строки "NaN" или "Infinity" соответственно. Если значение равно отрицательной бесконечности, то выходные данные будут иметь значение "(Infinity)", если '(' флаг задан, в противном случае выходные данные будут иметь значение "-Infinity". Эти значения не локализованы.

"dnint"><b> Byte, Short, Integer и Long </b>

Следующие преобразования могут применяться к byte, Byte, short, Shortint и Integer, longи Long.

<table class="striped"><подпись style="display:none">IntConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'d'<td style="vertical-align:top"'&#92;u0064'><td> Форматирует аргумент как десятичное целое число. Применяется алгоритм локализации.

'0' Если флаг задан и значение отрицательное, после знака будет происходить нулевое заполнение.

'#' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top">'o'<td style="vertical-align:top"'&#92;u006f'><td> Форматирует аргумент как целое число в базовом восьми. Локализация не применяется.

Если значение x отрицательное, результатом будет неподписаное значение, созданное путем добавления 2<sup>n</sup> к значению , где n — количество битов в типе, возвращаемое статическим SIZE полем в классах Byte#SIZE Byte, Short#SIZE Short, Integer#SIZE Integer или Long#SIZE Long соответствующим образом.

'#' Если флаг задан, выходные данные всегда будут начинаться с индикатора '0'радикса .

'0' Если флаг задан, выходные данные будут заполнены нулем в начале к ширине поля после любого указания знака.

Если '('задано значение '+', "  " или ',' присвоены флаги , будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top">'x'<td style="vertical-align:top"'&#92;u0078'><td> Форматирует аргумент в виде целого числа в базовом шестнадцатилетнем формате. Локализация не применяется.

Если значение x отрицательное, результатом будет неподписаное значение, созданное путем добавления 2<sup>n</sup> к значению , где n — количество битов в типе, возвращаемое статическим SIZE полем в классах Byte#SIZE Byte, Short#SIZE Short, Integer#SIZE Integer или Long#SIZE Long соответствующим образом.

'#' Если флаг задан, выходные данные всегда будут начинаться с индикатора "0x"радикса .

'0' Если флаг задан, выходные данные будут заполнены до ширины поля с нулем в начале после индикатора радикса или знака (при наличии).

Если '('заданы флаги , '&nbsp;&nbsp;''+', или ',' , будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'X'><td style="vertical-align:top"'&#92;u0058'<>td> Вариант в верхнем регистре .'x' Вся строка, представляющая число, будет преобразована в верхний регистр String#toUpperCase, включая 'x' (при наличии) и все шестнадцатеричные цифры 'a' - 'f' ('&#92;u0061' - '&#92;u0066').

</tbody></table>

Если преобразование равно 'o', 'x'или 'X' и '#''0' оба флага и , то результат будет содержать индикатор радикса ('0' для восьмерицы и "0x" или "0X" для шестнадцатеричного), некоторое число нулей (в зависимости от ширины) и значение.

'-' Если флаг не задан, перед знаком будет выполняться заполнение пробела.

Следующие флаги intFlags> применяются к числовым целочисленным преобразованиям:

<table class="striped"><подпись style="display:none">intFlags</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'+'<td style="vertical-align:top"'&#92;u002b'><td> Требует, чтобы выходные данные включали положительный знак для всех положительных чисел. Если этот флаг не задан, знак будет содержать только отрицательные значения.

Если заданы оба флага '+' и '&nbsp;&nbsp;' , будет IllegalFormatFlagsException выдано исключение .

<tr><th область="row" style="vertical-align:top"'&nbsp;&nbsp;'><td style="vertical-align:top"'&#92;u0020'<>td> Требует, чтобы выходные данные включали один дополнительный пробел ('&#92;u0020') для неотрицательных значений.

Если заданы оба флага '+' и '&nbsp;&nbsp;' , будет IllegalFormatFlagsException выдано исключение .

<tr><th область="row" style="vertical-align:top">'0'<td style="vertical-align:top"'&#92;u0030'><td> Требуется, чтобы выходные данные были заполнены начальными значениями java.text.DecimalFormatSymbols#getZeroDigit нулями до минимальной ширины поля после любого индикатора знака или радикса, за исключением преобразования NaN или бесконечности. Если ширина не указана, MissingFormatWidthException будет выдано исключение .

Если заданы оба флага '-' и '0' , будет IllegalFormatFlagsException выдано исключение .

<tr><th область="row" style="vertical-align:top">','<td style="vertical-align:top"'&#92;u002c'><td> Требуется, чтобы выходные данные включали разделители групп java.text.DecimalFormatSymbols#getGroupingSeparator, как описано в разделе "группа" алгоритма локализации.

<tr><th область="row" style="vertical-align:top"<>'('td style="vertical-align:top">'&#92;u0028'<td> Требуется, чтобы выходные данные добавляли в начало a '(' ('&#92;u0028') и добавляли a ')' ('&#92;u0029') к отрицательным значениям.

</tbody></table>

Если флаги intdFlags> не заданы, форматирование по умолчанию выглядит следующим образом:

<ul>

<li> Выходные данные оправдываются по правому краю width><в li Отрицательные числа, начинаемые с '-' ()'&#92;u002d'

<Li> Положительные числа и ноль не включают знак или дополнительное начальное пространство

<li> Не включены разделители группирования

</ul>

Ширина intWidth> — это минимальное количество символов, записываемых в выходные данные. Сюда входят любые знаки, цифры, разделители группирования, индикатор радикса и круглые скобки. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены пробелами ('&#92;u0020'), пока общее число символов не будет равно ширине. По умолчанию заполнение находится слева. Если '-' флаг задан, то заполнение будет находиться справа. Если ширина не указана, минимальное значение отсутствует.

Точность неприменима. Если указана точность, будет выдано IllegalFormatPrecisionException исключение .

"dnbint"><b> BigInteger </b>

Следующие преобразования могут быть применены к java.math.BigInteger.

<table class="striped"><подпись style="display:none">bIntConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'d'<td style="vertical-align:top"'&#92;u0064'><td> Требует форматирования выходных данных в виде десятичного целого числа. Применяется алгоритм локализации.

'#' Если флаг заданFormatFlagsConversionMismatchException, будет выдан.

<tr><th область="row" style="vertical-align:top">'o'<td style="vertical-align:top"'&#92;u006f'><td> Требует форматирования выходных данных в виде целого числа в базовом восьми. Локализация не применяется.

Если значение x отрицательное, результатом будет значение со знаком, начинающееся с '-' ('&#92;u002d'). Для этого типа разрешены выходные данные со знаком, так как в отличие от примитивных типов невозможно создать эквивалент без знака, не предполагая явного размера типа данных.

Если значение x положительное или нулевое '+' и присвоен флаг, результат будет начинаться с '+' ('&#92;u002b').

'#' Если флаг задан, выходные данные всегда будут начинаться с '0' префикса.

'0' Если флаг задан, выходные данные будут заполнены нулем в начале к ширине поля после любого указания знака.

',' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top">'x'<td style="vertical-align:top"'&#92;u0078'><td> Требуется формат выходных данных в виде целого числа в шестнадцати базовых значениях. Локализация не применяется.

Если значение x отрицательное, результатом будет значение со знаком, начинающееся с '-' ('&#92;u002d'). Для этого типа разрешены выходные данные со знаком, так как в отличие от примитивных типов невозможно создать эквивалент без знака, не предполагая явного размера типа данных.

Если значение x положительное или нулевое '+' и присвоен флаг, результат будет начинаться с '+' ('&#92;u002b').

'#' Если флаг задан, выходные данные всегда будут начинаться с индикатора "0x"радикса .

'0' Если флаг задан, выходные данные будут заполнены до ширины поля с нулем в начале после индикатора радикса или знака (при наличии).

',' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'X'><td style="vertical-align:top"'&#92;u0058'<>td> Вариант в верхнем регистре .'x' Вся строка, представляющая число, будет преобразована в верхний регистр String#toUpperCase, включая 'x' (при наличии) и все шестнадцатеричные цифры 'a' - 'f' ('&#92;u0061' - '&#92;u0066').

</tbody></table>

Если преобразование имеет значение 'o', 'x'или 'X' и '#''0' оба флага и , результат будет содержать базовый индикатор ('0' для восьмерицы и "0x" или "0X" для шестнадцатеричного значения), некоторое количество нулей (в зависимости от ширины) и значение.

'0' Если флаг задан и значение отрицательное, после знака будет происходить нулевое заполнение.

'-' Если флаг не задан, перед знаком будет выполняться заполнение пробела.

Применяются все флаги, определенные для Byte, Short, Integer и Long. Поведение по умолчанию при отсутствии флагов совпадает с поведением для byte, short, integer и Long.

Спецификация ширины та же, что и для byte, short, integer и long.

Точность неприменима. Если указана точность, будет выдано IllegalFormatPrecisionException исключение .

"dndec"><b> Float и Double</b>

Следующие преобразования могут применяться к float, Floatdouble и Double.

<table class="striped"><подпись style="display:none">floatConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"'e'><td style="vertical-align:top"'&#92;u0065'<>td> Требует форматирования выходных данных с использованием "scientific">computerized научной нотации. Применяется алгоритм локализации.

Форматирование величины m зависит от его значения.

Если m имеет значение NaN или infinite, выводятся литеральные строки "NaN" или "Infinity" соответственно. Эти значения не локализованы.

Если значение m равно положительному нулю или отрицательному нулю, то показатель экспоненты будет иметь значение "+00".

В противном случае результатом будет строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.

Пусть n будет уникальным целым числом, чтобы 10<sup>n</sup> <= m < 10<sup>n+1</sup>; затем пусть будет математически точным частное число m и 10<sup>n</sup> , чтобы 1 <= a < 10. Затем величина представлена в виде целочисленной части объекта , в виде одной десятичной цифры, за которой следует десятичный разделитель, за которым следуют десятичные цифры , представляющие дробную часть объекта , за которым следует нижний регистр для конкретного языкового стандарта java.text.DecimalFormatSymbols#getExponentSeparator экспонентный разделитель (например 'e', ), за которым следует знак степени, за которым следует представление n в виде десятичного целого числа, как создано методом Long#toString(long, int), и заполнено с нуля, чтобы включить по крайней мере две цифры.

Число цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию — 6. Если точность меньше числа цифр, которые будут отображаться после десятичной запятой в строке, возвращаемой Float#toString(float) или Double#toString(double) соответственно, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины вверх. В противном случае для достижения точности можно добавить нули. Для канонического представления значения используйте Float#toString(float) или Double#toString(double) соответствующим образом.

',' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'E'><td style="vertical-align:top"'&#92;u0045'<>td> Вариант в верхнем регистре .'e' Символом экспоненты будет разделитель экспоненты java.text.DecimalFormatSymbols#get ExponentSeparator в верхнем регистре (например, 'E').

<tr><th область="row" style="vertical-align:top">'g'<td style="vertical-align:top"'&#92;u0067'><td> Требует форматирования выходных данных в общей научной нотации, как описано ниже. Применяется алгоритм локализации.

После округления для точности форматирование результирующей величины m зависит от его значения.

Если значение m больше или равно 10<sup-4></sup>, но меньше 10<sup>precision</sup>, то оно представлено в десятичном формате.

Если значение m меньше 10<sup-4></sup> или больше или равно 10<sup>precision</sup>, то оно представлено в компьютерной научной нотации.

Общее количество значимых цифр в м равно точности. Если точность не указана, значение по умолчанию — 6. Если точность равна 0, то принимается значение 1.

'#' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'G'><td style="vertical-align:top"'&#92;u0047'<>td> Вариант в верхнем регистре .'g'

<tr><th область="row" style="vertical-align:top"'f'><td style="vertical-align:top"'&#92;u0066'<>td> Требует форматирования выходных данных с использованием десятичного> формата. Применяется алгоритм локализации.

Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.

Если m NaN или infinite, будут выведены литеральные строки "NaN" или "Infinity", соответственно. Эти значения не локализованы.

Величина форматируется как целочисленная часть m без начальных нулей, за которым следует десятичный разделитель, за которым следует одна или несколько десятичных цифр, представляющих дробную часть m.

Число цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию — 6. Если точность меньше числа цифр, которые будут отображаться после десятичной запятой в строке, возвращаемой Float#toString(float) или Double#toString(double) соответственно, значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины вверх. В противном случае для достижения точности можно добавить нули. Для канонического представления значения используйте Float#toString(float) или Double#toString(double) соответствующим образом.

<tr><th область="row" style="vertical-align:top">'a'<td style="vertical-align:top"'&#92;u0061'><td> Требует форматирования выходных данных в шестнадцатеричной экспоненциальной форме. Локализация не применяется.

Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента x.

Если x имеет отрицательное значение или отрицательное нулевое значение, результат будет начинаться с '-' ('&#92;u002d').

Если x имеет положительное значение или положительное-нулевое значение и '+' присвоен флаг , результат будет начинаться с '+' ('&#92;u002b').

Форматирование величины m зависит от его значения.

<ul>

<Li> Если значение равно NaN или infinite, будут выведены литеральные строки "NaN" или "Infinity" соответственно.

<Li> Если m равно нулю, то он представлен строкой "0x0.0p0".

<Li> Если m является значением double с нормализованным представлением, то подстроки используются для представления полей знака и экспоненты. Значимая часть представлена символами "0x1." , за которыми следует шестнадцатеричное представление остальной части знака и в виде дроби. Экспонента представлена ('&#92;u0070'), за которой следует десятичная строка непредвзятой экспоненты, как если бы она создавалась 'p' путем вызова Integer#toString(int) Integer.toString значения экспоненты. Если указана точность, значение округляется до заданного числа шестнадцатеричных цифр.

<Li> Если m является значением double с субнормальным представлением, то, если точность не указана в диапазоне от 1 до 12 включительно, значимая часть представлена символами, за которыми следует шестнадцатеричное представление остальной части знака в виде дроби, а показатель экспоненты'0x0.', представленный .'p-1022' Если точность находится в интервале [1,  12], субнормальное значение нормализуется таким образом, что оно начинается с символов '0x1.', округляется до количества шестнадцатеричных цифр точности, а показатель экспоненты корректируется соответствующим образом. Обратите внимание, что в субнормальном знаке должна быть по крайней мере одна ненулевое значение.

</ul>

'(' Если заданы флаги или ',' , FormatFlagsConversionMismatchException будет выдано исключение .

<tr><th область="row" style="vertical-align:top"'A'><td style="vertical-align:top"'&#92;u0041'<>td> Вариант в верхнем регистре .'a' Вся строка, представляющая число, будет преобразована в верхний регистр, включая 'x' ('&#92;u0078') и 'p' ('&#92;u0070' и все шестнадцатеричные цифры 'a' - 'f' ('&#92;u0061' - '&#92;u0066').

</tbody></table>

Применяются все флаги, определенные для Byte, Short, Integer и Long.

'#' Если флаг задан, десятичный разделитель будет присутствовать всегда.

Если флаги floatdFlags не заданы>, форматирование по умолчанию выглядит следующим образом:

<ul>

<li> Выходные данные оправданы по правому краю<width в> li Отрицательные числа начинаются с '-'<li> Положительные числа, а положительные нули не включают знак или дополнительное начальное пространство

<li> Не включены разделители группирования

<li> Десятичный разделитель будет отображаться только в том случае, если за ним следует цифра

</ul>

Ширина floatDWidth> — это минимальное количество символов, записываемых в выходные данные. Сюда входят любые знаки, цифры, разделители группирования, десятичные разделители, экспоненциальный символ, индикатор радиксов, круглые скобки и строки, представляющие бесконечность и NaN, если это применимо. Если длина преобразованного значения меньше ширины, выходные данные будут заполнены пробелами ('&#92;u0020'), пока общее число символов не будет равно ширине. По умолчанию заполнение находится слева. '-' Если флаг задан, то заполнение будет находиться справа. Если ширина не указана, минимальное значение отсутствует.

Если преобразование floatDPrec> равно 'e'или 'E''f', то точность — это число цифр после десятичного разделителя. Если точность не указана, предполагается, что она имеет значение 6.

Если преобразование равно 'g' или 'G', то точность — это общее количество значимых цифр в полученной величине после округления. Если точность не указана, значение по умолчанию — 6. Если точность равна 0, то принимается значение 1.

Если преобразование равно 'a' или 'A', то точность — это количество шестнадцатеричных цифр после точки радикса. Если точность не указана, будут выведены все цифры, возвращаемые Double#toHexString(double) .

"dnbdec"><b> BigDecimal </b>

Можно применить java.math.BigDecimal BigDecimalследующие преобразования.

<table class="striped"><подпись style="display:none">floatConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"'e'><td style="vertical-align:top"'&#92;u0065'<>td> Требует форматирования выходных данных с использованием "bscientific">компьютеризированной научной нотации. Применяется алгоритм локализации.

Форматирование величины m зависит от его значения.

Если значение m равно положительному нулю или отрицательному нулю, то показатель экспоненты будет иметь значение "+00".

В противном случае результатом будет строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.

Пусть n будет уникальным целым числом, чтобы 10<sup>n</sup> <= m < 10<sup>n+1</sup>; затем пусть будет математически точным частное число m и 10<sup>n</sup> , чтобы 1 <= a < 10. Затем величина представляется в виде целочисленной части объекта , в виде одной десятичной цифры, за которой следует десятичный разделитель, за которым следуют десятичные цифры, представляющие дробную часть объекта , за которым следует символ 'e' экспоненты ('&#92;u0065'), за которым следует знак экспоненты, за которым следует представление n в виде десятичного целого числа, созданного методом Long#toString(long, int). и с нулевым заполнением для включения по крайней мере двух цифр.

Число цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию — 6. Если точность меньше числа цифр справа от десятичной запятой, то значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины вверх. В противном случае для достижения точности можно добавить нули. Для канонического представления значения используйте BigDecimal#toString().

',' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'E'><td style="vertical-align:top"'&#92;u0045'<>td> Вариант в верхнем регистре .'e' Символ экспоненты будет иметь значение 'E' ('&#92;u0045').

<tr><th область="row" style="vertical-align:top">'g'<td style="vertical-align:top"'&#92;u0067'><td> Требует форматирования выходных данных в общей научной нотации, как описано ниже. Применяется алгоритм локализации.

После округления для точности форматирование результирующей величины m зависит от его значения.

Если значение m больше или равно 10<sup-4></sup>, но меньше 10<sup>precision</sup>, то оно представлено в десятичном формате.

Если значение m меньше 10<sup-4></sup> или больше или равно 10<sup>precision</sup>, то оно представлено в компьютерной научной нотации.

Общее количество значимых цифр в м равно точности. Если точность не указана, значение по умолчанию — 6. Если точность равна 0, то принимается значение 1.

'#' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

<tr><th область="row" style="vertical-align:top"'G'><td style="vertical-align:top"'&#92;u0047'<>td> Вариант в верхнем регистре .'g'

<tr><th область="row" style="vertical-align:top"'f'><td style="vertical-align:top"'&#92;u0066'<>td> Требует форматирования выходных данных с использованием десятичного формата bdecimal.> Применяется алгоритм локализации.

Результатом является строка, представляющая знак и величину (абсолютное значение) аргумента. Форматирование знака описано в алгоритме локализации. Форматирование величины m зависит от его значения.

Величина форматируется как целочисленная часть m без начальных нулей, за которым следует десятичный разделитель, за которым следует одна или несколько десятичных цифр, представляющих дробную часть m.

Число цифр в результате для дробной части m или a равно точности. Если точность не указана, значение по умолчанию — 6. Если точность меньше числа цифр справа от десятичной запятой, то значение будет округляться с помощью алгоритма java.math.RoundingMode#HALF_UP округления половины вверх. В противном случае для достижения точности можно добавить нули. Для канонического представления значения используйте BigDecimal#toString().

</tbody></table>

Применяются все флаги, определенные для Byte, Short, Integer и Long.

'#' Если флаг задан, десятичный разделитель будет присутствовать всегда.

Поведение по умолчанию при отсутствии флагов совпадает с поведением для float и double.

Спецификация ширины и точности совпадает с параметрами Float и Double.

<h4>"ddt">Date/Time</h4>

Это преобразование может применяться к long, Long, CalendarDate и<TemporalAccessor TemporalAccessor table class="striped"<>подпись style="display:none">DTConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'t'<td style="vertical-align:top"'&#92;u0074'><td> Prefix для символов преобразования даты и времени. <tr><th область="row" style="vertical-align:top"'T'><td style="vertical-align:top"'&#92;u0054'<>td> Вариант в верхнем регистре .'t'

</tbody></table>

Для преобразований и определены 't' следующие суффиксы символов преобразования даты и 'T' времени. Типы похожи на типы, но не полностью идентичны тем, которые определены в GNU date и POSIX strftime(3c). Для доступа к функциям Java предоставляются дополнительные типы преобразования (например 'L' , для миллисекунд в секунду).

Для форматирования времени используются следующие символы преобразования:

<table class="striped"><подпись style="display:none">time</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'H'<td style="vertical-align:top">'&#92;u0048'<td> Час дня для 24-часовых часов, отформатированный в виде двух цифр с нулем в начале по мере необходимости, т. е. 00 - 23соответствует 00 полуночи.

<tr><th область="row" style="vertical-align:top"'I'><td style="vertical-align:top"'&#92;u0049'<>td> Hour для 12-часовых часов, отформатированных в виде двух цифр с нулем в начале при необходимости, т. е. . 01 - 12 01 соответствует часам (утром или днем).

<tr><th область="row" style="vertical-align:top">'k'<td style="vertical-align:top">'&#92;u006b'<td> Час дня для 24-часовых часов, т. е. 0 - 23соответствует 0 полуночи.

<tr><th область="row" style="vertical-align:top">'l'<td style="vertical-align:top">'&#92;u006c'<td> Hour для 12-часовых часов, т. е. 1 - 12. 1 соответствует одному часу (утром или днем).

<tr><th область="row" style="vertical-align:top"'M'><td style="vertical-align:top"'&#92;u004d'<>td> Minute в течение часа, отформатированного в виде двух цифр с нулем в начале по мере необходимости, т. е. . 00 - 59

<tr><th область="row" style="vertical-align:top">'S'<td style="vertical-align:top">'&#92;u0053'<td> Seconds within the minute, отформатированный в виде двух цифр с нулем в начале по мере необходимости, т. е. 00 - 60 ("60" — специальное значение, необходимое для поддержки високосных секунд).

<tr><th область="row" style="vertical-align:top"'L'><td style="vertical-align:top"'&#92;u004c'<>td> Millisecond в пределах второго формата в виде трех цифр с начальными нулями при необходимости, т. е. . 000 - 999

<tr><th область="row" style="vertical-align:top"'N'><td style="vertical-align:top"'&#92;u004e'<>td> Nanosecond в пределах второго, отформатированного в виде девяти цифр с начальными нулями при необходимости, т. е. . 000000000 - 999999999 Точность этого значения ограничена разрешением базовой операционной системы или оборудования.

<tr><th область="row" style="vertical-align:top"'p'><td style="vertical-align:top"'&#92;u0070'<>td> Locale-specific java.text.DateFormatSymbols#getAmPmStrings morning or afternoon маркер в нижнем регистре, например""am или "pm". Использование префикса 'T' преобразования приводит к выводу в верхнем регистре. (Обратите внимание, что 'p' выходные данные создаются в нижнем регистре. Это отличается от GNU date и POSIX strftime(3c) , которые создают выходные данные в верхнем регистре.)

<tr><th область="row" style="vertical-align:top"'z'><td style="vertical-align:top"<'&#92;u007a'>td> RFC 822 style numeric time zone offset from GMT, например . -0800 Это значение будет корректироваться при необходимости для летнего времени. Для long, Longи Date используется часовой пояс TimeZone#getDefault() по умолчанию для этого экземпляра виртуальной машины Java.

<tr><th область="row" style="vertical-align:top">'Z'<td style="vertical-align:top"'&#92;u005a'><td> Строка, представляющая сокращение часового пояса. Это значение будет корректироваться при необходимости для летнего времени. Для long, Longи Date используется часовой пояс TimeZone#getDefault() по умолчанию для этого экземпляра виртуальной машины Java. Языковой стандарт модуля форматирования заместит языковой стандарт аргумента (если таковой есть).

<tr><th область="row" style="vertical-align:top"<'s'>td style="vertical-align:top">'&#92;u0073'<td> Секунды с начала эпохи, начиная с 1 января 1970 00:00:00 года в формате UTC, т. е. Long.MIN_VALUE/1000 до .Long.MAX_VALUE/1000

<tr><th область="row" style="vertical-align:top"<'Q'>td style="vertical-align:top">'&#92;u004f'<td> Milliseconds с начала эпохи, начиная с 1 января 1970 00:00:00 года в формате UTC, т. е. Long.MIN_VALUE до .Long.MAX_VALUE Точность этого значения ограничена разрешением базовой операционной системы или оборудования.

</tbody></table>

Для форматирования дат используются следующие символы преобразования:

<table class="striped"><подпись style="display:none">date</подпись>< tbody>

<tr><th область="row" style="vertical-align:top">'B'<td style="vertical-align:top">'&#92;u0042'<td> locale-specific java.text.DateFormatSymbols#getMonths full month name, например "January", . "February"

<tr><th область="row" style="vertical-align:top">'b'<td style="vertical-align:top">'&#92;u0062'<td> Locale-specific java.text.DateFormatSymbols#getShortMonths сокращенное название месяца, например "Jan", . "Feb"

<tr><th область="row" style="vertical-align:top"'h'><td style="vertical-align:top"'&#92;u0068'<>td> Совпадает с .'b'

<tr><th область="row" style="vertical-align:top"><'A'td style="vertical-align:top"'&#92;u0041'><td> Locale-specific name of the java.text.DateFormatSymbols#getWeekdays day of the week, например "Sunday", "Monday"<tr><th область="row" style="vertical-align:top">'a'<td style="vertical-align:top"td">'&#92;u0061'<> Короткое имя java.text.DateFormatSymbols#getShortWeekdays для конкретного языкового стандарта, Например"Sun", , "Mon"<tr><th область="row" style="vertical-align:top"<>'C'td style="vertical-align:top"><'&#92;u0043'td> Четырехзначный год разделен на 100, отформатированный в виде двух цифр с нулем в начале при необходимости, т. е. 00 - 99<tr><th область="row" style="vertical-align:top">'Y'<td style="vertical-align:top">'&#92;u0059'<td> Year, отформатированный по крайней мере до четырех цифр с начальными нулями по мере необходимости, например 0092 равно 92 CE для григорианского календаря.

<tr><th область="row" style="vertical-align:top"'y'><td style="vertical-align:top"'&#92;u0079'<>td> Последние две цифры года, отформатированные начальными нулями при необходимости, т. е. . 00 - 99

<tr><th область="row" style="vertical-align:top"'j'><td style="vertical-align:top"'&#92;u006a'<>td> Day of year, отформатированный в виде трех цифр с начальными нулями при необходимости, например 001 - 366 для григорианского календаря. 001 соответствует первому дню года.

<tr><th область="row" style="vertical-align:top"<'m'>td style="vertical-align:top"><'&#92;u006d'td> Month, отформатированный в виде двух цифр с начальными нулями по мере необходимости, т. е. 01 - 13, где "01" — первый месяц года, а ("13" — специальное значение, необходимое для поддержки лунных календарей).

<tr><th область="row" style="vertical-align:top">'d'<td style="vertical-align:top">'&#92;u0064'<td> Day of month, отформатированный в виде двух цифр с начальными нулями при необходимости, т. е. 01 - 31, где "01" — это первый день месяца.

<tr><th область="row" style="vertical-align:top">'e'<td style="vertical-align:top">'&#92;u0065'<td> День месяца, отформатированный в виде двух цифр, т. е. 1 - 31 где "1" — первый день месяца.

</tbody></table>

Следующие символы преобразования используются для форматирования общих композиций даты и времени.

<table class="striped"><подпись style="display:none">composites</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"><'R'td style="vertical-align:top"'&#92;u0052'><td> Time formatted for the 24-hour clock as "%tH:%tM"<tr th><область="row" style="vertical-align:top"<'T'>td style="vertical-align:top"'&#92;u0054'<>td> Time formatted for the 24-hour clock as ."%tH:%tM:%tS"

<tr><th область="row" style="vertical-align:top"'r'><td style="vertical-align:top"'&#92;u0072'<>td> Time formatted for the 12-hour clock as ."%tI:%tM:%tS %Tp" Расположение маркера утром или во второй половине дня ('%Tp') может зависеть от языкового стандарта.

<tr><th область="row" style="vertical-align:top"'D'><td style="vertical-align:top"'&#92;u0044'<>td> Date formatted as ."%tm/%td/%ty"

<tr><th область="row" style="vertical-align:top"'F'><td style="vertical-align:top"<'&#92;u0046'>td> ISO 8601 complete date в формате ."%tY-%tm-%td"

<tr><th область="row" style="vertical-align:top">'c'<td style="vertical-align:top">'&#92;u0063'<td> Дата и время в формате "%ta %tb %td %tT %tZ %tY", например . "Sun Jul 20 16:17:00 EDT 1969"

</tbody></table>

Применяется '-' флаг, определенный для общих преобразований. '#' Если флаг задан, будет FormatFlagsConversionMismatchException выдано исключение .

Ширина — это минимальное количество символов, записываемых в выходные данные. Если длина преобразованного значения меньше width , выходные данные будут заполнены пробелами ('&#92;u0020'), пока общее количество символов не будет равно ширине. По умолчанию заполнение находится слева. '-' Если флаг задан, то заполнение будет находиться справа. Если ширина не указана, минимальное значение отсутствует.

Точность неприменима. Если указана точность, будет выдано IllegalFormatPrecisionException исключение .

<h4>"dper">Percent</h4>

Преобразование не соответствует ни одному аргументу.

<table class="striped"><подпись style="display:none">DTConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"'%'<>td> Результатом является литерал '%' ()'&#92;u0025'

Ширина — это минимальное количество символов, записываемых в выходные данные, включая '%'. Если длина преобразованного значения меньше width , выходные данные будут заполнены пробелами ('&#92;u0020'), пока общее количество символов не будет равно ширине. Заполнение находится слева. Если ширина не указана '%' , выводится только .

Применяется '-' флаг, определенный для общих преобразований. Если указаны какие-либо другие флаги, FormatFlagsConversionMismatchException будет выдано исключение .

Точность неприменима. Если указана IllegalFormatPrecisionException точность, будет выдано исключение .

</tbody></table>

<h4>"dls">Разделитель< линий/h4>

Преобразование не соответствует ни одному аргументу.

<table class="striped"><подпись style="display:none">DTConv</подпись>< tbody>

<tr><th область="row" style="vertical-align:top"><'n'td> зависящий от платформы разделитель строк, возвращаемый .System#lineSeparator()

</tbody></table>

Флаги, ширина и точность не применяются. Если указаны какие-либо из нихIllegalFormatFlagsExceptionIllegalFormatWidthException, будут выданы , и IllegalFormatPrecisionExceptionсоответственно.

<h4>"dpos">Argument Index</h4>

Описатели формата могут ссылаться на аргументы тремя способами:

<ul>

<Li>Явное индексирование используется, если описатель формата содержит индекс аргумента. Индекс аргумента представляет собой десятичное целое число, указывающее положение аргумента в списке аргументов. На первый аргумент ссылается "1$", на второй — "2$" и т. д. На аргумент можно ссылаться несколько раз.

Пример:

<blockquote>

formatter.format("%4$s %3$s %2$s %1$s %4$s %3$s %2$s %1$s",
                               "a", "b", "c", "d")
              // -&gt; "d c b a d c b a"

</blockquote>

<Относительное>индексирование li используется, если описатель формата содержит '<' флаг ('&#92;u003c'), который приводит к повторному использованию аргумента для предыдущего описателя формата. Если предыдущий аргумент отсутствует, MissingFormatArgumentException возникает исключение .

<blockquote>

formatter.format("%s %s %&lt;s %&lt;s", "a", "b", "c", "d")
               // -&gt; "a b b b"
               // "c" and "d" are ignored because they are not referenced

</blockquote>

<Li>Обычное индексирование используется, если описатель формата не содержит ни индекса аргумента, ни флага '<' . Каждому описателям формата, использующим обычное индексирование, назначается последовательный неявный индекс в списке аргументов, который не зависит от индексов, используемых явным или относительным индексированием.

<blockquote>

formatter.format("%s %s %s %s", "a", "b", "c", "d")
              // -&gt; "a b c d"

</blockquote>

</ul>

Можно использовать строку формата, которая использует все формы индексирования, например:

<blockquote>

formatter.format("%2$s %s %&lt;s %s", "a", "b", "c", "d")
              // -&gt; "b a a b"
              // "c" and "d" are ignored because they are not referenced

</blockquote>

Максимальное количество аргументов ограничивается максимальным размером массива Java, как определено <в статье>Об торговле java&; Спецификация< или cite> виртуальной машины. Если индекс аргумента не соответствует доступному аргументу, возникает MissingFormatArgumentException исключение .

Если аргументов больше, чем описателей формата, дополнительные аргументы игнорируются.

Если не указано иное, передача аргумента null любому методу или конструктору в этом классе вызовет NullPointerException исключение .

Добавлено в версии 1.5.

Документация по Java для java.util.Formatter.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License Creative Commons 2.5 Attribution License.

Конструкторы

Formatter()

Создает новый модуль форматирования.

Formatter(File)

Создает новый модуль форматирования с указанным файлом.

Formatter(File, Charset, Locale)

Создает новый модуль форматирования с указанным файлом, набором символов и языковым стандартом.

Formatter(File, String)

Создает новый модуль форматирования с указанным файлом и набором символов.

Formatter(File, String, Locale)

Создает новый модуль форматирования с указанным файлом, набором символов и языковым стандартом.

Formatter(IAppendable)

Создает новый модуль форматирования с указанным назначением.

Formatter(IAppendable, Locale)

Создает новый модуль форматирования с указанным назначением и языковым стандартом.

Formatter(Locale)

Создает новый модуль форматирования с указанным языковым стандартом.

Formatter(PrintStream)

Создает новый модуль форматирования с указанным потоком печати.

Formatter(Stream)

Создает новый модуль форматирования с указанным потоком вывода.

Formatter(Stream, Charset, Locale)

Создает новый модуль форматирования с указанным потоком вывода, набором символов и языковым стандартом.

Formatter(Stream, String)

Создает новый модуль форматирования с указанным потоком вывода и набором символов.

Formatter(Stream, String, Locale)

Создает новый модуль форматирования с указанным потоком вывода, набором символов и языковым стандартом.

Formatter(String)

Создает новый модуль форматирования с указанным именем файла.

Formatter(String, Charset, Locale)

Создает новый модуль форматирования с указанным именем файла, набором символов и языковым стандартом.

Formatter(String, String)

Создает новый модуль форматирования с указанным именем файла и набором символов.

Formatter(String, String, Locale)

Создает новый модуль форматирования с указанным именем файла, набором символов и языковым стандартом.

Свойства

Class

Возвращает класс среды выполнения данного объекта Object.

(Унаследовано от Object)
Handle

Дескриптор базового экземпляра Android.

(Унаследовано от Object)
JniIdentityHashCode

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
JniPeerMembers

Интерпретатор для строк формата в стиле printf.

PeerReference

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
ThresholdClass

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)
ThresholdType

Этот API поддерживает инфраструктуру Mono для Android и не предназначен для использования непосредственно из кода.

(Унаследовано от Object)

Методы

Clone()

Создает и возвращает копию этого объекта.

(Унаследовано от Object)
Close()

Закрывает этот модуль форматирования.

Dispose()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
Dispose(Boolean)

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
Equals(Object)

Указывает, равен ли какой-то другой объект этому объекту.

(Унаследовано от Object)
Flush()

Очищает этот модуль форматирования.

Format(Locale, String, Object[])

Записывает форматированную строку в назначение этого объекта, используя указанную строку формата и аргументы.

Format(String, Object[])

Записывает форматированную строку в назначение этого объекта, используя указанную строку формата и аргументы.

GetHashCode()

Возвращает значение хэш-кода для объекта.

(Унаследовано от Object)
IoException()

IOException Возвращает последний результат, вызванный свойством этого модуля форматированияAppendable.

JavaFinalize()

Вызывается сборщиком мусора для объекта , когда сборка мусора определяет, что больше нет ссылок на объект .

(Унаследовано от Object)
Locale()

Возвращает языковой стандарт, заданный конструкцией этого модуля форматирования.

Notify()

Пробуждение одного потока, ожидающего на мониторе этого объекта.

(Унаследовано от Object)
NotifyAll()

Активирует все потоки, ожидающие на мониторе этого объекта.

(Унаследовано от Object)
Out()

Возвращает назначение для выходных данных.

SetHandle(IntPtr, JniHandleOwnership)

Задает свойство Handle.

(Унаследовано от Object)
ToArray<T>()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
ToString()

Возвращает строковое представление объекта.

(Унаследовано от Object)
UnregisterFromRuntime()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
Wait()

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления/><em> или <прерывания></em>.

(Унаследовано от Object)
Wait(Int64)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Заставляет текущий поток ждать, пока он не будет пробужден, как правило, из-за <уведомления</>em>, <>прерывания< или> em, либо до истечения определенного количества реального времени.

(Унаследовано от Object)

Явные реализации интерфейса

IJavaPeerable.Disposed()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.DisposeUnlessReferenced()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.Finalized()

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.JniManagedPeerState

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

Интерпретатор для строк формата в стиле printf.

(Унаследовано от Object)

Методы расширения

JavaCast<TResult>(IJavaObject)

Выполняет преобразование типа, проверенное средой выполнения Android.

JavaCast<TResult>(IJavaObject)

Интерпретатор для строк формата в стиле printf.

GetJniTypeName(IJavaPeerable)

Интерпретатор для строк формата в стиле printf.

FlushAsync(IFlushable)

Интерпретатор для строк формата в стиле printf.

Применяется к