Они форматируют String
. Специфический синтаксис Java приведен в java.util.Formatter
.
Общий синтаксис следующий:
%[argument_index$][flags][width][.precision]conversion
%02d
выполняет десятичное целочисленное преобразование d
, отформатированное с нулевым заполнением (флаг 0
), с шириной 2
. Таким образом, аргумент int
, значение которого, скажем, 7
, будет отформатирован в "07"
как String
.
Вы также можете увидеть эту строку форматирования, например, в _ 12_.
Часто используемые форматы
Это всего лишь несколько часто используемых форматов, которые не охватывают исчерпывающим образом синтаксис.
Нулевое заполнение чисел
System.out.printf("Agent %03d to the rescue!", 7);
// Agent 007 to the rescue!
Ширина для обоснования
Вы можете использовать флаг -
для выравнивания по левому краю; иначе это будет правильным оправданием.
for (Map.Entry<Object,Object> prop : System.getProperties().entrySet()) {
System.out.printf("%-30s : %50s%n", prop.getKey(), prop.getValue());
}
Это печатает что-то вроде:
java.version : 1.6.0_07
java.vm.name : Java HotSpot(TM) Client VM
java.vm.vendor : Sun Microsystems Inc.
java.vm.specification.name : Java Virtual Machine Specification
java.runtime.name : Java(TM) SE Runtime Environment
java.vendor.url : http://java.sun.com/
Для более эффективного форматирования сообщений вы можете использовать _17 _. %n
- это преобразование новой строки (см. Ниже).
Шестнадцатеричное преобразование
System.out.println(Integer.toHexString(255));
// ff
System.out.printf("%d is %<08X", 255);
// 255 is 000000FF
Обратите внимание, что здесь также используется относительная индексация <
(см. Ниже).
Форматирование с плавающей запятой
System.out.printf("%+,010.2f%n", 1234.567);
System.out.printf("%+,010.2f%n", -66.6666);
// +01,234.57
// -000066.67
Для более мощного форматирования с плавающей запятой используйте _22 _ вместо этого.
%n
для разделителя строк, зависящего от платформы
System.out.printf("%s,%n%s%n", "Hello", "World");
// Hello,
// World
%%
для действительного %
-знака
System.out.printf("It's %s%% guaranteed!", 99.99);
// It's 99.99% guaranteed!
Обратите внимание, что double
литерал 99.99
автоматически упаковывается в Double
, на котором определено преобразование строки с использованием toString()
.
n$
для явной индексации аргументов
System.out.printf("%1$s! %1$s %2$s! %1$s %2$s %3$s!",
"Du", "hast", "mich"
);
// Du! Du hast! Du hast mich!
<
для относительной индексации
System.out.format("%s?! %<S?!?!?", "Who's your daddy");
// Who's your daddy?! WHO'S YOUR DADDY?!?!?
Связанные вопросы
person
polygenelubricants
schedule
31.07.2010