包含$的格式字符串之间有区别吗?

%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

10-07 22:51