— Я ще хотіла тобі розповісти про метод 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.}"); code>
— Не дуже читаємо – чи не так?
— А на мою думку – нормально.
— Але якщо імена змінних у тебе будуть довгі або потрібно буде викликати методи для отримання даних, буде вже не дуже читаємо:
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 |
%% | Символ % |
Насправді ці параметри ще мають свої налаштування, а вони мають свої.
Але для початку тобі цього вистачить. Якщо ж ні – ось тобі посилання на офіційну документацію:
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ