【问题标题】:Why is the output of Java String.format null Boolean false and how to String.format as null instead? [duplicate]为什么 Java String.format null Boolean 的输出为 false 以及如何将 String.format 设置为 null 呢? [复制]
【发布时间】:2018-11-03 00:47:41
【问题描述】:

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

Boolean nullValue = null;
Boolean falseValue = false;
System.out.println( String.format( "%b %b", nullValue, falseValue ) );

这个“假假”的输出如何?这正是我在我的机器上得到的。 Java 8. Mac。 Java 菜鸟。

编辑

所以这是预期的行为。看起来 Boolean toString 也不会产生我想要的输出 null、false、true 的行为。每个想要这个的人都应该自己编写一个方法吗?是否有产生该输出的功能?

【问题讨论】:

  • 作为小费System.out.println( String.format( "%b %b", nullValue, falseValue ) );可以缩减为System.out.printf("%b %b%n", nullValue, falseValue ) ;,%n换行
  • 我不同意这是重复的,Jakg 链接到的问题很有用,但只是询问 boolean 的字符串格式参数是什么,而不是具体如何处理相应地获取 null 输出。
  • If the argument arg is null, then the result is "false" 是答案的开头,现在看来和你的有关吗?
  • 相关的是,但它并没有专门解决从我看不到的某些 toString 函数中获取 null、false 或 true 的最佳方法。在这一点上写我自己的,但想知道我是否遗漏了什么。
  • 如果你想要null,true,false,那么就用%s

标签: java string-formatting


【解决方案1】:

如果您查看java.util.Formatter.FormatSpecifier.printBoolean(Object) 方法,它只会在变量为真时打印“true” - 否则打印错误。

进一步看,这已在之前的 StackOverflow question 中介绍过。此行为在文档中指定。

【讨论】:

    猜你喜欢
    • 2013-05-23
    • 2011-06-07
    • 2021-11-22
    • 2011-06-11
    • 2018-01-09
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多