Использование System.out.printf () - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в Java. Изучая метод printf, я наткнулся на следующий вопрос:

Каким будет вывод следующей программы?

System.out.printf("%1$d + %b", 456, false);
System.out.println();
System.out.printf("%1$d + %b", 456);

Ответ:

456 + true
456 + true

Может ли кто-нибудь помочь мне понять, насколько правдива печать, а я ее не передам?

1 Ответ

0 голосов
/ 01 июля 2018

1$ называется Явное индексирование , последующий формат %1$d не приведет к увеличению индекса, поэтому он также будет использовать 456 для форматирования %b и в соответствии с документ :

Если аргумент arg равен нулю, то результатом является «ложь». Если Арг является логическое или логическое, то результатом является строка, возвращаемая String.valueOf (Arg). В противном случае результатом будет «true».

Вот почему вы всегда получаете true.

Чтобы получить ложь:

System.out.printf("%1$d + %b", null); // null + false

или удалить явное индексирование:

System.out.printf("%d + %b", 456, null); // 456 + false

Проверьте документ java.uti.Formatter, чтобы узнать больше.

...