English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Метод String format() в Java возвращает отформатированную строку на основе переданных параметров.
Синтаксис метода String format():
String.format(String format, Object... args)
Внимание:
format() - это статический метод. Мы вызываем метод format() через имя класса String.
В предыдущем коде, ... означает, что можно передавать несколько объектов в format().
format - Строка формата
args - 0 или более параметров
Возвращает отформатированную строку
class Main { public static void main(String[] args) { String language = "Java"; int number = 30; String result; // Форматируем объект в строку result = String.format("Language: %s", language); System.out.println(result); // Language: Java // Форматируем число в шестнадцатеричное result = String.format("Шестнадцатеричное число: %x", number); // 1e System.out.println(result); // Шестнадцатеричное число: 1e {} {}
В предыдущем примере, обратите внимание на код
result = String.format("Language: %s", language);
Это "Language: %s" являетсяСтрока формата.
Замените %s в строке формата на содержимое language. %s - это символ формата.
Таким образом, %x заменяется шестнадцатеричным значением number в String.format("Number: %x", number).
Вот некоторые常用的 символы формата:
Символ | Описание |
---|---|
%b, %B | В зависимости от параметра "true" или "false" |
%s, %S | Одна строка |
%c, %C | Unicode символ |
%d | Десятичные целые числа (только для целых чисел) |
%o | Окталовые целые числа (только для целых чисел) |
%x, %X | Шестнадцатеричные целые числа (только для целых чисел) |
%e, %E | Для научной записи (для плавающих точек) |
%f | Для десятичных чисел (для плавающих точек) |
class Main { public static void main(String[] args) { int n1 = 47; float n2 = 35.864f; double n3 = 44534345.76d; //Форматирование в восьмеричное число System.out.println(String.format("Октал n1: %o", n1)); // 57 //Форматирование в шестнадцатеричное число System.out.println(String.format("Шестнадцатеричное значение n1: %x", n1)); // 2f System.out.println(String.format("Шестнадцатеричное значение n1: %X", n1)); // 2F //Форматирование в строку System.out.println(String.format("n1 как строка: %s", n1)); // 47 System.out.println(String.format("n2 как строка: %s", n2)); // 35.864 //Формат科学ного числа System.out.println(String.format("n3 в научной записи: %g", n3)); // 4.45343e+07 {} {}
Результат вывода
Октал n1: 57 Шестнадцатеричное значение n1: 2f Шестнадцатеричное значение n1: 2F n1 как строка: 47 n2 как строка: 35.864 n3 в научной записи: 4.45343e+07
Вы можете использовать несколько форматных спецификаторов в строке формата.
//Использование нескольких форматных спецификаторов //Строка формата class Main { public static void main(String[] args) { int n1 = 47; String text = "Результат"; System.out.println(String.format("%s Шестнадцатеричное: %x", text, n1)); {} {}
Результат вывода
Результат Шестнадцатеричное: 2f
Здесь, %s заменяется значением text. Точно так же, %o заменяется шестнадцатеричным значением n1.
class Main { public static void main(String[] args) { float n1 = -452.534f; double n2 = -345.766d; //按原样格式化浮点数 System.out.println(String.format("n1 = %f", n1)); // -452.533997 System.out.println(String.format("n2 = %f", n2)); // -345.766000 //显示到小数点后两位 System.out.println(String.format("n1 = %.2f", n1)); // -452.53 System.out.println(String.format("n2 = %.2f", n2)); // -345.77 {} {}
Результат вывода
n1 = -452.533997 n2 = -345.766000 n1 = -452.53 n2 = -345.77
Внимание:Когда мы используем форматирование -452.534 с помощью %f, мы получаем -452.533997. Это не из-за метода format(). Java не возвращает точное представление чисел с плавающей запятой.
При использовании спецификатора формата %.2f функция format() предоставляет два числа после десятичной точки.
// Использование более одного спецификатора формата // В формате строки class Main { public static void main(String[] args) { int n1 = 46, n2 = -46; String result; // Заполнение чисел пробелами // Длина строки 5 result = String.format("|%5d|", n1); // | 46| System.out.println(result); // Заполнение чисел числом 0 // Длина строки 5 result = String.format("|%05d|", n1); // |00046| System.out.println(result); // Использование знака перед числом result = String.format("%+d", n1); // +46 System.out.println(result); result = String.format("%+d", n2); // -46 System.out.println(result); // Внесение отрицательного числа в скобки // Удаление знака result = String.format("%(d", n2); // (46) System.out.println(result); {} {}
// Использование 0x перед шестнадцатеричной системой счисления // Использование 0 перед восьмеричной системой счисления class Main { public static void main(String[] args) { int n = 46; System.out.println(String.format("%#o", n)); // 056 System.out.println(String.format("%#x", n)); // 0x2e {} {}
Если необходимо использовать указанную лингвистическую среду, то метод String format() также имеет другой синтаксис.
String.format(Locale l, String format, Object... args)
//Использование Locale import java.util.Locale; class Main { public static void main(String[] args) { int number = 8652145; String result; //Использование текущей языковой среды result = String.format("Числа: %,d", number); System.out.println(result); //Использование GERMAN языковой среды в качестве первого параметра result = String.format(Locale.GERMAN, "Немецкие числа: %,d", number); System.out.println(result); {} {}
Результат вывода
Числа: 8,652,145 Немецкие числа: 8.652.145
Внимание:В Германии, целые числа заменяются точкой.