— Я еще хотела тебе рассказать о методе 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 |
%% | Символ % |
На самом деле у этих параметров еще есть свои настройки, а у них свои.
Но для начала тебе этого хватит. Если же нет – вот тебе ссылка на официальную документацию:
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ