— Я еще хотела тебе рассказать о методе 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
%% Символ %

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

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

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