NoO*_*One 5 java string formatting
我是Java新手.在学习这种printf方法时,我遇到了以下问题:
以下程序的输出是什么?
System.out.printf("%1$d + %b", 456, false);
System.out.println();
System.out.printf("%1$d + %b", 456);
Run Code Online (Sandbox Code Playgroud)
答案是:
456 + true
456 + true
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解如果没有我传递它是如何真实的?
1$被称为显式索引,连续格式%1$d不会导致索引的增量,因此它也将456用于格式化%b,并根据doc:
如果参数arg为null,则结果为"false".如果arg是布尔值或布尔值,则结果是String.valueOf(arg)返回的字符串.否则,结果为"true".
这就是你总能得到的原因true.
弄错:
System.out.printf("%1$d + %b", null); // null + false
Run Code Online (Sandbox Code Playgroud)
或删除显式索引:
System.out.printf("%d + %b", 456, null); // 456 + false
Run Code Online (Sandbox Code Playgroud)
查看文档java.uti.Formatter了解更多信息.