首页 > 解决方案 > 为什么 String.format 接受 int 代替 %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 本身的类型转换?

标签: javastringstring-formattingstring.format

解决方案


是的。因为%s它需要toString你在那里设置的任何东西。这适用于 Java 中的所有内容(尽管可能会产生有趣的输出)。

因为%d您需要给出一个整数类型(如Integer,LongBigInteger)。不尝试自动转换。

您可以在Javadoc中阅读有关它的更多信息(查看关于转换的部分)。


推荐阅读