Форматирование строк используется если есть шаблонный текст, в некоторых
местах которого нужно вставлять значения, которые могут быть разными и
приходить в качестве аргументов извне.
В Java существуют, например, следующие методы для форматирования строк:
1 метод format класса String:
public static String format(String format, Object… args)
(возвращает строку, отформатированную из строки format с помощью остальных аргументов args)
1 String.format()
2 System.out.printf()
3 System.out.format()
Метод format класса String: public static String format(String format, Object… args) возвращает строку, отформатированную из строки format с помощью остальных аргументов args.
Метод printf() это часть java.io.PrintStream класса.
Синтакс может быть следующим:
System.out.printf(format, arguments);
System.out.printf(locale, format, arguments);
Внутри printf() использует класс java.util.Formatter для разбора строки формата и создания вывода. Дополнительные параметры строки формата можно найти в документации Formatter Javadoc.
Правила форматирования определяются параметром форматирования (format)
Правила (спецификаторы) формата начинаются с символа % и заканчиваются символом, указывающим тип аргумента, который нужно отформатировать (conversion-character). Спецификаторы формата могут (опционально) содержать такие параметры как flags, width, precision.
%[flags][width][.precision]conversion-character
[flags] - флаги - определяют стандартные способы изменения вывода и чаще всего используются для форматирования целых чисел и чисел с плавающей запятой.
[width] - ширина - указывает ширину поля для вывода аргумента. Он представляет собой минимальное количество символов, записываемых на выходе.
[.precision] - точность - указывает количество разрядов точности при выводе значений с плавающей запятой. Кроме того, мы можем использовать его для определения длины подстроки для извлечения из строки.
Пример: System.out.printf("Hello %s!%n", "World");
%s для форматирования (вывода) объектов - строк
%d для вывода целого числа (int. byte, short, int, long, BigInteger)
%f для вывода десятичного числа с плавающей точкой
%b для вывода любого типа, который будет приведен к boolean
%t для форматирования значений даты/времени
%n используется для разделения строки на линии (как Enter)
%s
Если попробовать вставить, к примеру, double в место, в котором прописан объект строки, double будет приведен к строке:
То есть данная запись
String str = String.format("Вася - %s! Он сейчас %s", 18.1, "на работе");
Выведет следующее:
Вася - 18.1! Он сейчас на работе
%d
Пример:
String.format("Поймал рыб штук %d!",25)
Результат: Поймал рыб штук 25!
%f
System.out.printf("%f", Math.PI); // 3,141593
Вывод десятичного числа с точкой и заданием количества символов после точки.
Например, для десятичного числа с 3 символами после запятой:
System.out.printf("%.3f", Math.PI); // 3,142
%b
(true — если значение не null, false — если null)
Пример:
String.format("2x2=5 %b!",null)
Результат: 2x2=5 false!
Равнозначные примеры:
1 String str = String.format("Вася - %s! Он сейчас %s", "инженер", "на работе");
System.out.println(str);
2 System.out.printf("Вася - %s! Он сейчас %s", "инженер", "на работе");
3 System.out.format("Вася - %s! Он сейчас %s", "инженер", "на работе");
Все три примера выведут в консоль следующее:
Вася - инженер! Он сейчас на работе
Дополнительную информацию можно посмотреть здесь:
https://www.baeldung.com/java-printstream-printf
Комментариев нет:
Отправить комментарий