首页 > 解决方案 > System.out.printf() 用法

问题描述

我是 Java 新手。在学习printf方法时,我遇到了以下问题:

以下程序的输出是什么?

System.out.printf("%1$d + %b", 456, false);
System.out.println();
System.out.printf("%1$d + %b", 456);

答案是:

456 + true
456 + true

有人可以帮助我了解在没有我通过的情况下打印的真实性吗?

标签: javastringformatting

解决方案


1$被称为Explicit indexing, 的连续格式%1$d不会导致索引的增加,因此它也会使用456to format %b,并且根据文档

如果参数 arg 为空,则结果为“假”。如果 arg 是布尔值或布尔值,则结果是 String.valueOf(arg) 返回的字符串。否则,结果为“真”。

这就是为什么你总是得到true

要弄错:

System.out.printf("%1$d + %b", null); // null + false

或删除显式索引:

System.out.printf("%d + %b", 456, null); // 456 + false

检查文档以java.uti.Formatter获取更多信息。


推荐阅读