【发布时间】:2018-01-12 07:35:39
【问题描述】:
在 Java 中,您可以使用 String.Format 函数来制作格式化字符串。您还可以通过在格式字符串中使用i$,按照您希望的顺序引用函数的参数,其中i 是您正在引用的参数的索引。不幸的是,它似乎并不完全一致,因为以下两行代码产生了完全相同的结果:
String.format("My name is %0$s and I am %2$d years old", "Joe", 20);
String.format("My name is %1$s and I am %2$d years old", "Joe", 20);
为什么 0 和 1 都指向同一个元素?它不应该是严格从 1 开始的索引而不是从零开始的索引吗?
【问题讨论】:
-
JVM 可能比你聪明。它可能会识别出只有一个参数适合 %d 格式并进行相应匹配。
-
@duffymo 并非完全如此。这里是
Joe与索引0和1匹配,而不是整数参数 -
是的,只有十进制格式化程序的 20 个匹配项
标签: java string indexing string-formatting