为什么Java String.format null布尔值的输出为false,以及如何将String.format改为null?

为什么Java String.format null布尔值的输出为false,以及如何将String.format改为null?,java,string-formatting,Java,String Formatting,我肯定以前有人问过这个问题,但我找不到答案 Boolean nullValue = null; Boolean falseValue = false; System.out.println( String.format( "%b %b", nullValue, falseValue ) ); 这个“假假”的输出是怎样的?这正是我在我的机器上得到的。爪哇8。雨衣。Java noob 编辑 这就是我们想要的行为。看起来Boolean toString也不会产生我想要的输出null、false和tr

我肯定以前有人问过这个问题,但我找不到答案

Boolean nullValue = null;
Boolean falseValue = false;
System.out.println( String.format( "%b %b", nullValue, falseValue ) );
这个“假假”的输出是怎样的?这正是我在我的机器上得到的。爪哇8。雨衣。Java noob

编辑


这就是我们想要的行为。看起来Boolean toString也不会产生我想要的输出null、false和true的行为。每个想要这个的人都应该自己写一个方法吗?是否存在生成该输出的函数

如果查看方法
java.util.Formatter.FormatSpecifier.printBoolean(对象)
则仅在变量为true时打印“true”,否则打印false


进一步看,这已在前一节中介绍。此行为在文档中指定。

作为提示
System.out.println(String.format(“%b%b”,null值,false值))可以减少为
System.out.printf(“%b%b%n”,null值,false值)
%n
新行我不同意这是一个重复的问题,Jagg链接的问题很有用,但只是询问布尔值的字符串格式参数是什么,而不是具体如何相应地处理获取null输出。
如果参数arg为null,则结果为“false”
是答案的开始,它现在看起来和你的相关吗?相关的是的,但它并没有明确指出从我不认为可用的toString函数中获取null、false或true的最佳方法。此时正在编写我自己的,但不知道我是否遗漏了什么。如果您想要null、true、false,则只需使用%s