快速业务通道

驯服Tiger: 格式化输出 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
标准错误的 System.out 和 System.err 对象。Tiger 引入了两个新的构造函数(用于直接写入文件)和六个方法以提供对格式化的支持(三对)。第一对是另一版本的 append() 方法。这一对方法实现了新的 java.lang.Appendable 接口。一般不会直接调用这些方法。直接调用的是 format() 和 printf() ,其中 printf() 版本只是 format() 版本的方便的包装器,如清单 4 所示:

清单 4. PrintStream.format 方法

public PrintStream format(String format,               Object... args) public PrintStream format(Locale l,               String format,               Object... args)

要记住新的变量参数支持,它是由 ... 指派的,如上面清单 4 所示。

驯服Tiger: 格式化输出(3)

时间:2011-01-31 John Zukowski

清单 5 演示了用 PrintStream 的 format() 方法打印今天的日期:

清单 5. 使用 PrintStream.format 的例子

/ import java.util.Calendar; public class Now {   public static void main(String args[]) {    System.out.format(      "Today is %1$tB %1$te, %1$tY.",      Calendar.getInstance()      );   } }

运行这个程序的输出是 Today is April 2, 2004. ,当然实际的输出取决于运行这个程序的日期。上面代码中的格式化字符串 %1$tB 告诉程序使用第一个参数并打印 date 对象的完整月名。格式化字符串 %1$te 意味着显示月中的日期,而格式化字符串 %1$tY 是四位数字的年。在 Formatter 对象的 Javadoc 中列出了打印日期的其他选项。

String 支持

String 类有两个新的 static format() 方法,它们的作用与相应的 printf() 类似。发送一个格式化字符串和参数(还可能有 Locale )、并使用在格式化字符串中指定的格式转换参数。如果是这个方法的 String 版本,那么是以 String 对象而不是经过流返回结果。这些方法不是很显眼,但是有了它们就可以避免直接使用 Formatter 对象并创建中间的 StringBuilder 。

格式化任意对象

到目前为止看到的每项内容都是描述如何使用新的格式化能力对已有对象和基本数据进行格式化。如果希望用 Formatter 提供对自己的对象的支持,那么就要用到 Formattable 接口。通过在自己的类中实现如清单 6 所示的一个 formatTo() 方法,可以对自已的类使用格式化字符串:

清单 6. Formattable 接口

void formatTo(Formatter formatter,         int flags,         Integer width,         Integer precision)

驯服Tiger: 格式化输出(4)

时间:2011-01-31 John Zukowski

清单 7 演示了通过提供一个具有 name 属性的简单类来使用 Formattable 接口。这个 name 显示在输出中,它支持控制输出的宽度和对齐。

清单 7. formattable 使用示例

import java.util.Locale; import java.util.Formatter; import java.util.Formattable; public class MyObject implements Formattable {   String name;   public MyObject(String name) {    this.name = name;   }   public void formatTo(      Formatter fmt,      int f,      Integer width,      Integer precision) {    StringBuilder sb = new StringBuilder();    if (precision == null) {     // no max width     sb.append(name);    } else if (name.length() < precision) {     sb.append(name);    } else {     sb.append(name.substring(0, precision - 1)).append(''*'');    }    // apply width and justification    if ((width != null) &&

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号