【问题标题】:Why does String.format accept ints in place of %s?为什么 String.format 接受 int 代替 %s?
【发布时间】:2020-02-16 23:48:11
【问题描述】:

查看 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");

为什么我可以使用 int 代替 %s 而反之则不行?它是否在进行从 int 到 string 本身的类型转换?

【问题讨论】:

    标签: java string string-formatting string.format


    【解决方案1】:

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

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

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

    【讨论】:

    • 那么在定义 %s 的地方使用整数是否被认为是不好的做法?还是对值调用 toString 是多余的?
    • 不,当您想获得toString 输出时,可以在所有内容上使用%s。使用%d 以获得额外的清晰度或如果您需要控制格式(例如位数)。在参数上自己调用toString 是多余的/适得其反的/不安全的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2021-12-12
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多