Spec-Zone .ru
спецификации, руководства, описания, API
|
Потоковые объекты, которые реализуют форматирование, являются экземплярами также PrintWriter
, символьный поток class, или PrintStream
PrintStream
объекты, в которых Вы, вероятно, будете нуждаться, System.out
System.err
PrintWriter
, нет PrintStream
. Как весь байт и символьные потоковые объекты, экземпляры PrintStream
и PrintWriter
реализуйте стандартный набор write
методы для простого байта и вывода символов. Кроме того, оба PrintStream
и PrintWriter
реализуйте тот же самый набор методов для того, чтобы преобразовать внутренние данные в отформатированный вывод. Обеспечиваются два уровня форматирования:
print
и println
отформатируйте отдельные значения стандартным способом.format
форматы почти любое число значений, основанных на строке формата, со многими опциями для точного форматирования.print
и println
МетодыВызов print
или println
выводит единственное значение после преобразования значения, используя соответствующее toString
метод. Мы можем видеть это в Root
пример:
public class Root { public static void main(String[] args) { int i = 2; double r = Math.sqrt(i); System.out.print("The square root of "); System.out.print(i); System.out.print(" is "); System.out.print(r); System.out.println("."); i = 5; r = Math.sqrt(i); System.out.println("The square root of " + i + " is " + r + "."); } }
Вот вывод Root
:
The square root of 2 is 1.4142135623730951. The square root of 5 is 2.23606797749979.
i
и r
переменные форматируются дважды: в первый раз используя код на перегрузке print
, во второй раз кодом преобразования, автоматически сгенерированным компилятором Java, который также использует toString
. Можно отформатировать любое значение этот путь, но Вы не имеете большого количества контроля над результатами.
format
Метод format
метод форматирует многократные параметры, основанные на строке формата. Строка формата состоит из статического текста, встроенного со спецификаторами формата; за исключением спецификаторов формата, строка формата выводится неизменная.
Строки формата поддерживают много функций. В этом учебном руководстве мы только покроем некоторые основы. Для полного описания см. format string syntax
в спецификации API.
Root2
пример форматирует два значения с синглом format
вызов:
public class Root2 { public static void main(String[] args) { int i = 2; double r = Math.sqrt(i); System.out.format("The square root of %d is %f.%n", i, r); } }
Вот вывод:
The square root of 2 is 1.414214.
Как эти три, используемые в этом примере, все спецификаторы формата начинаются с a %
и конец с 1-или 2-символьным преобразованием, которое определяет вид отформатированного сгенерированного вывода. Эти три преобразования, используемые здесь:
d
форматирует целочисленное значение как десятичное значение.f
форматирует значение с плавающей точкой как десятичное значение.n
выводит специфичный для платформы разделитель строки.Вот некоторые другие преобразования:
x
форматирует целое число как шестнадцатеричное значение.s
форматы любое значение как строка.tB
форматирует целое число как специфичное для локали имя месяца.Есть много других преобразований.
За исключением %%
и %n
, все спецификаторы формата должны соответствовать параметр. Если они не делают, исключение выдается.
В языке программирования Java, \n
escape всегда генерирует символ перевода строки (\u000A
). Не использовать \n
если Вы определенно не хотите символ перевода строки. Чтобы получить корректный разделитель строки для локальной платформы, использовать %n
.
В дополнение к преобразованию спецификатор формата может содержать несколько дополнительных элементов, которые далее настраивают отформатированный вывод. Вот пример, Format
, это использует каждый возможный вид элемента.
public class Format { public static void main(String[] args) { System.out.format("%f, %1$+020.10f %n", Math.PI); } }
Вот вывод:
3.141593, +00000003.1415926536
Дополнительные элементы являются все дополнительными. Следующие данные показывают, как более длинный спецификатор разламывает на элементы.
Элементы Спецификатора Формата.
Элементы должны появиться в показанном порядке. Работая от права, дополнительные элементы:
s
и другие общие преобразования, это - максимальный width отформатированного значения; значение является правильно-усеченным в случае необходимости.Format
пример, +
флаг определяет, что число должно всегда форматироваться со знаком, и 0
флаг определяет это 0
дополнительный символ. Другие флаги включают -
(дополните справа), и ,
(отформатируйте число со специфичными для локали тысячами разделителей). Отметьте, что некоторые флаги не могут использоваться с определенными другими флагами или с определенными преобразованиями.<
соответствовать тот же самый параметр как предыдущий спецификатор. Таким образом пример, возможно, сказал: System.out.format("%f, %<+020.10f %n", Math.PI);