如何轻松地找出System.out.printf通常会打印出多少个字符

3

您知道有什么简单的方法可以找出System.out.printf(<<一些参数>>)将打印出多少个字符。在 C++ 中,printf 返回写入的所有字符的总数(成功时)。

在 Java 中,当我们输入:

System.out.println(System.out.printf(<<formula to check>>));

我们将会得到类似这样的东西:
java.io.PrintStream@700dce12

printf返回一个PrintStream对象。基本上,您在该对象上固有地调用.toString(),这就是为什么您看到java.io.PrintStream@700dce12的原因。Object类的toString方法返回一个字符串,该字符串由对象是实例的类的名称、at-sign字符“@”和对象的哈希码的无符号十六进制表示组成。换句话说,此方法返回一个等于以下值的字符串: getClass().getName() + '@' + Integer.toHexString(hashCode())。http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#toString - Engineer2021
http://docs.oracle.com/javase/6/docs/api/java/io/PrintStream.html - Engineer2021
1个回答

3

我相信System.out.printf() 使用与String.format() 相同的格式选项,因此你可以直接这样说:

int len = String.format("my format string", my, arguments).length();

1
从源代码来看,两者最终都会使用相同的参数调用Formatter.format,只是printf将使用Locale.getDefault(),而String.format则使用Locale.getDefault(Locale.Category.FORMAT)。如果这两个不同,长度可能会有所不同。但是,printfString.format都可以接受可选的Locale参数。 - ajb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接