Почему String.format принимает int вместо% s? - PullRequest
2 голосов
/ 17 февраля 2020

Глядя на пару ссылок для Java String.format (), я вижу, что они упоминают, что он имеет следующий формат:

public static String format(String format, Object... args)

Поэтому он позволяет мне написать следующее:

String newStr = String.format("%s,%s,%s", 1, 2, 3);

Но я не могу этого сделать:

String newStr = String.format("%d,%d,%d", "1", "2", "3");

Почему я могу использовать целые числа вместо% s, а не наоборот? Делает ли он преобразование типов из int в саму строку?

1 Ответ

6 голосов
/ 17 февраля 2020

Да. Для %s он вызывает toString на том, что вы там установили. Это работает для всего в Java (хотя может привести к забавным выводам).

Для %d вам нужно указать целочисленный тип (например, Integer, Long или BigInteger). Автоматическое преобразование c не предпринимается.

Подробнее об этом можно прочитать в Javado c (см. Раздел о преобразованиях).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...