JavaRush /Курсы /Java Multithreading /String.format в Java

String.format в Java

Java Multithreading
2 уровень , 6 лекция
Открыта

— Я еще хотела тебе рассказать о методе String.format в Java.

Это статический метод класса String, но очень полезный. Но начну издалека.

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

— Какой текст?

— Ну, например, такой:

У тебя есть переменные:
String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;
Нужно вывести текст:
User = {name: Bender, age: 12 years, friend: Fry, weight: 200 kg.}

— Примерно так:

String name = "Bender";
int age = 12;
String friend = "Fry";
int weight = 200;

System.out.println("User = {name: " + name + ", age: " + age + " years, friend: " + friend + ", weight: " + weight + " kg.}");

— Не очень читаемо – не так ли?

— А по-моему – нормально.

— Но вот если имена переменных у тебя будут длинные или нужно будет вызывать методы для получения данных, будет уже не очень читаемо:

System.out.println("User = {name: " + user.getName() + ", age: " + user.getAge() + " years, friend: " + user.getFriends().get(0) + ", weight: " + user.getExtraInformation().getWeight() + " kg.}");

— Ну, если так, то да – не очень читаемо.

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

— Да говори же скорее, что это за волшебный метод такой?

— Вот как можно записать приведенный выше код:

String text = String.format("User = {name: %s, age: %d years, friend: %s, weight: %d kg.}",
user.getName(), user.getAge(), user.getFriends().get(0), user.getExtraInformation().getWeight())

System.out.println(text);

В метод String.format первым параметром передается строка-шаблон, в которой, на местах, в которые мы хотим подставить значения, стоят специальные символы: %s, %d.

После строки-шаблона передаются параметры, значения которых и будут подставлены на место символов %s, %d.

Если нужно подставить строку мы пишем %s, если число — %d.

Вот тебе пример попроще:

Пример
String s = String.format("a = %d, b = %d, c = %d", 1, 4, 3);
Результат:
s будет равна «a = 1, b = 4, c = 3»

— Да, это очень удобно.

— А ведь еще можно делать и так:

Пример
int a = -1, b = 4, c = 3;
String template;
 if (a < 0)
  template = "Warning! a = %d, b = %d, c = %d";
 else 
  template = "a = %d, b = %d, c = %d";

System.out.println(String.format(template, a, b, c) );
Результат вывода:
Warning! a = -1, b = 4, c = 3

— Гм. Действительно полезный метод, спасибо, Элли.

— Если ты хочешь использовать в методе format другие типы данных, то вот тебе таблица:

Обозначение Тип
%s String
%d целое число: int, long, …
%f вещественное число: float, double
%b boolean
%c char
%t Date
%% Символ %

На самом деле у этих параметров еще есть свои настройки, а у них свои.

Но для начала тебе этого хватит. Если же нет – вот тебе ссылка на официальную документацию:

Ссылка на дополнительный материал

Комментарии (100)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Никита QA Уровень 34
6 июня 2025
Эту лекцию будет полезно в Syntax перенести
Anonymous #3473304 Уровень 51
10 марта 2025
Запомните %n означает перевод на новую строку.
No Name Уровень 36
23 ноября 2024
+ лекция в копилке
Private Joker Уровень 36
21 июня 2024
Ну штош, спустя столько уровней, нас все-таки решили познакомить с этим. Спасибо)
13 сентября 2024
Вечно недовольный
Nazadain Уровень 39
20 ноября 2024
Не знаю чего он недоволен, про format рассказывали в синтаксисе или коре, я точно не помню. Тут просто дают возможность освежить знания.
Максим Li Уровень 40
18 мая 2024
18.05.2024
Olga Kuzmins Уровень 39
7 мая 2024
Чтобы слово напечаталось заглавными буквами нужно использовать %S
papaperejivaet Уровень 38
3 апреля 2024
Нашёл на одном англоязычном сайте форматирование дат, сделал по ним pdf
Private Joker Уровень 36
21 июня 2024
скачал, спасибо
zakat Уровень 40
25 июля 2025
обновить бы ссылочку, если не сложно)
Victor Уровень 36
22 августа 2025
Перевыложи plz, исходная ссылка не работает
Ислам Уровень 33
10 марта 2024
Nice
Anonymous #3390940 Уровень 38
24 февраля 2024
🦝
23 февраля 2024
Другие символы времени, которые могут использоваться с %t, включают: %tA: Полное название дня недели %ta: Сокращенное название дня недели %tB: Полное название месяца %tb: Сокращенное название месяца %td: День месяца (двузначное число) %te: День месяца (однозначное число) %tY: Год с веком %ty: Двузначный формат года %tH: Часы в 24-часовом формате (двузначное число) %tI: Часы в 12-часовом формате (двузначное число) %tk: Часы в 24-часовом формате (однозначное число) %tl: Часы в 12-часовом формате (однозначное число) %tM: Минуты (двузначное число) %tS: Секунды (двузначное число) %tL: Миллисекунды (три цифры) %tN: Наносекунды (девять цифр) %tp: AM или PM %tz: Часовой пояс
Aleksey63 Уровень 36
28 февраля 2024
дополнение: %tm - номер месяца. Во второй задаче смена порядка %Х$s, где Х - индекс значения.
Shhopat Уровень 51
19 апреля 2024
thanks! you really helped me.