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

Насправді ці параметри ще мають свої налаштування, а вони мають свої.

Але для початку тобі цього вистачить. Якщо ж ні – ось тобі посилання на офіційну документацію:

Посилання на додатковий матеріал