包含$的格式字符串之间有区别吗?%1d
与%1$d
我注意到,在应用程序代码中,我们两者兼有,似乎都可以正常工作。
或使用%1d to %2d
vs %1$d to %2$d
最佳答案
%d
-仅显示数字
int first = 10;
System.out.printf("%d", first);
// output:
// 10
%1d
-显示编号,其中包含应“保留”多少空间的信息(至少一个)int first = 10;
System.out.printf("->%1d<-", first);
// output:
// ->10<-
%9d
-保留“ 9”个字符(如果数字会更短-在此处放置空格)并向右对齐int first = 10;
System.out.printf("->%9d<-", first);
// output:
// -> 10<-
// 123456789
%-9d
-与上面相同,但与LEFT对齐(此minus
很重要)int first = 10;
System.out.printf("->%-9d<-", first);
// output:
// ->10 <-
// 123456789
%1$d
-使用varargs中元素的位置(格式)(因此您可以重新使用元素,而不是将它们传递两次)int first = 10;
int second = 20;
System.out.printf("%1$d %2$d %1$d", first, second);
// output:
// 10 20 10
%1$9d
-混合两个。获取第一个参数(1$
)并保留九个字符(%9d
)int first = 10;
System.out.printf("->%1$9d<-", first);
// output:
// -> 10<-
// 123456789