Форматирование целых чисел нулями в Java: String.format
Быстрый ответ
Если вам нужно быстрое решение, можно использовать следующий подход:
String.format("%08d", 123); // Результат: "00000123".
Здесь %08d гарантирует длину строки в 8 символов, дополняя её нулями до нужной длины.
Если требуется дополнение пробелами вместо нулей, модифицируйте формат следующим образом:
String.format("%8d", 123); // Результат: " 123".
Флаг %8d создаёт строку из 8 символов, заполняя отсутствующие места пробелами.

Выбор между дополнением нулями и пробелами
Выбор между дополнением пробелами и нулями зависит от конкретной задачи. Нули подходят для числовых полей, пробелы — для выравнивания текста. В общих чертах:
- Для ID и кодов подойдёт дополнение нулями с помощью
String.format("%08d", number). - Для форматирования текста подходит дополнение пробелами:
String.format("%8d", number).
Форматирование больших чисел и переменная ширина строки
Для форматирования больших чисел или динамического дополнения строки, формат можно конструировать на лету:
int width = 10;
String formatted = String.format("%0" + width + "d", 123);
// Ширина 10, результат: "0000000123".
width можно изменять в зависимости от ситуации, при этом код позаботится о необходимом дополнении.
Точное форматирование с DecimalFormat
Для точного контроля над форматом можно использовать DecimalFormat:
DecimalFormat df = new DecimalFormat("00000");
String formatted = df.format(123); // Результат: "00123".
StringUtils: прекрасный инструмент из Apache commons-lang
Метод StringUtils.leftPad() идеально подходит для работы со строками:
String padded = StringUtils.leftPad(String.valueOf(123), 8, '0');
// Результат: "00000123".
Это эффективный способ добавления требуемых символов.
Визуализация
Форматирование строк в Java можно представить как инструменты для скульптуры:
// Исходное число (🧱): 93
String.format("|%5d|", 93); // Преобразуем "кирпич" в 5-символьную строку:
До: 🧱 (93)
После: | 93| // 🧱 теперь в более отполированном виде
Важные аспекты, на которые следует обратить внимание
Особенности форматирования с пробелами в начале
Запрос формата "_%3d" может вызвать FormatException. Для добавления пробелов используйте только %3d, для нулей — %03d.
Учёт локализации при форматировании
Как у персонажей бывают разные облики, так и числа могут отображаться по-разному в различных языках. Для учёта местных особенностей используйте String.format(Locale locale, String format, Object... args).
Работа с большими числами
Следите за размером чисел: максимум для int — 2^31-1. Для работы с большими числами используйте long или BigInteger.
Потокобезопасность при форматировании
DecimalFormat не является потокобезопасным. Большую осторожность следует проявлять при его применении в многопоточной среде.
Полезные материалы
- String (Java Platform SE 8) — информация о
String.format(). - Formatter (Java Platform SE 8) — руководство по синтаксису и использованию Formatter.
- Formatting Numeric Print Output (The Java™ Tutorials) — учебник по форматированию чисел.
- java – How can I pad an integer with zeros on the left? – Stack Overflow — обсуждение форматирования на Stack Overflow.
- Java String Format Examples: 2021 Edition – DZone — примеры применения
String.format(). - Java String format() method – javatpoint — подробный учебник по методу
String.format()в Java.


