Создание форматированной строки в Java: аналог sprintf
Быстрый ответ
Для форматирования строк в Java применяется метод String.format() либо функция System.out.printf(), выводящая форматированные данные в консоль. Эти методы аналогичны функции sprintf из языка программирования C.
Пример применения String.format():
String result = String.format("Привет, %s, твой результат: %d", "Алиса", 85);
Пример использования System.out.printf():
System.out.printf("Привет, %s, твой результат: %d%n", "Алиса", 85);
Оба примера сформируют строку Привет, Алиса, твой результат: 85, где %s означает подстановку строкового значения, а %d — целочисленного.

Освоение методов форматирования строк
Понимание плейсхолдеров
В Java символ % вместе с спецификаторами формата используется для обозначения мест, где в строке должны подставляться переменные. Наиболее часто употребляемые спецификаторы:
%d— целые числа%f— вещественные числа%s— строки%xили%X— шестнадцатеричные числа
Форматирование выравнивания
Подстройка выравнивания и заполнения текста возможна путем расположения числа между % и спецификатором формата:
// Установим ширину поля для числа
String.format("%4d", 42); // " 42"
Практичный метод formatted
Начиная с Java 13, доступен удобный метод formatted для облегченного форматирования строк:
String greeting = "Привет, %s!".formatted("Мир"); // "Привет, Мир!"
Продвинутые техники форматирования
Мощное сочетание ByteArrayOutputStream & PrintStream
Для сложных задач в Java предусмотрено использование комбинации PrintStream и ByteArrayOutputStream.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
ps.printf("%4d %6.2f", 42, 3.14159);
ps.flush();
String formatted = baos.toString(); // Получаем " 42 3.14"
Советы по оптимизации производительности
Избегайте лишней работы со строками! При частых операциях с текстом используйте StringBuilder, а не + для конкатенации строк.
StringBuilder hexBuilder = new StringBuilder();
for(byte b : byteArray) {
hexBuilder.append(String.format("%02X", b));
}
String hexString = hexBuilder.toString();
Визуализация
Форматирование строк в Java можно представить как декорирование торта:
Ингредиенты:
%d— количество украшений (Тип: нуга)%f— вес посыпки (0.75 фунта)%s— надпись (С Днём Рождения)
Преобразование вашего торта при помощи String.format():
До: 🎂 С Днём Рождения %s, с %f фунтами посыпки и %d кусочками нуги.
После: 🎂 С Днём Рождения Тим, с 0.75 фунтами посыпки и 12 кусочками нуги.
String.format() позволяет подобрать украшение для вашего торта 🎉
Практические примеры и рекомендации
Форматирование даты и времени
Для работы с датами и временем идеально подходит класс DateTimeFormatter.
LocalDateTime now = LocalDateTime.now();
String formattedDate = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")); // Готово к использованию!
Форматирование с учетом локальных особенностей
Учет локальных особенностей при форматировании поможет предотвратить ошибки:
String numberString = String.format(Locale.GERMANY, "%,d", 1234567); // "1.234.567", именно так в Германии!
Быстрое преобразование числа в шестнадцатеричный формат
Для ускорения процесса преобразования в шестнадцатеричный формат можно применить таблицу символов:
final char[] hexChars = "0123456789ABCDEF".toCharArray();
char[] hex = new char[byteArray.length * 2];
for (int i = 0; i < byteArray.length; i++) {
int v = byteArray[i] & 0xFF;
hex[i * 2] = hexChars[v >>> 4];
hex[i * 2 + 1] = hexChars[v & 0x0F];
}
String hexString = new String(hex);
Полезные материалы
- Java String Format Examples: 2021 Edition – DZone — Сайт предлагает разнообразные примеры использования метода
String.format()в Java. - Formatter (Java Platform SE 8) — Официальная документация класса
Formatter. - Java String format() Method With Examples – GeeksforGeeks — Учебное пособие с множеством примеров применения метода
String.format()в Java. - Formatting Numeric Print Output (The Java™ Tutorials) — Инструкция по форматированию чисел в Java от компании Oracle.
- CodeProject – CodeProject — Статья о возможностях функции
printf()на языке Java.


