суббота, 1 октября 2022 г.

Форматирование строк в Java. System.out.printf . Описание спецификаторов формата %

   Форматирование строк используется если есть шаблонный текст, в некоторых местах которого нужно вставлять значения, которые могут быть разными и приходить в качестве аргументов извне.

    В 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

Комментариев нет:

Отправить комментарий

Наследование в Java

   «родительское/дочернее»     Наследование (inheritance) - свойство системы, позволяющее описать (создать) новый класс на основе уже су...