java - 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
有人可以帮助我了解在没有我通过的情况下打印的真实性吗?
解决方案
1$
被称为Explicit indexing, 的连续格式%1$d
不会导致索引的增加,因此它也会使用456
to 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
获取更多信息。
推荐阅读
- python - 双击 python 文件与通过 cmd 运行的结果不同
- node.js - 如何在 Passport 身份验证中包含 acr_values
- git - 什么时候我应该在 git commit 或 git push 之后调用 jenkins build?
- html - Bootstrap 4中的等距文本布局
- css - 为什么我的页脚没有停留在 Gatsby Site 的底部?
- python - Groupby 计数打印到单个行
- string - 最小添加以使由 '{'、'}'、'['、']'、'('、')' 组成的括号字符串有效
- javascript - 如何减少和增加reactJS中复选框的值?
- r - 将摘要“n”从一个数据帧添加到另一个数据帧(tidyverse)
- traveling-salesman - 旅行推销员替代 - 如果城市之间的距离都相同,人们将如何编码?