为什么 String.format 接受整数代替 %s?

Why does String.format accept ints in place of %s?

查看 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 到 string 本身的类型转换?

是的。对于 %s,无论您在其中设置什么,它都会调用 toString。这适用于 Java 中的所有内容(尽管可能会产生有趣的输出)。

对于%d你需要给出一个整数类型(比如IntegerLongBigInteger)。未尝试自动转换。

您可以在 the Javadoc 中阅读更多相关信息(查看关于转化的部分)。