格式化输出
来源:互联网 发布:我打打单软件 编辑:程序博客网 时间:2024/05/29 13:05
-- Start
在 JDK 5.0 之前,我们使用NumberFormat 类来格式化数字和货币,使用 DateFormat 类来格式化日期和时间,使用MessageFormat 类来格式化消息。从 JDK 5.0 开始,我们又多了一种选择,我们可以像使用 C 语言的 printf 函数一样使用 System.out.printf 方法,不过要比 C 语言的 printf 函数更强大,因为 Java 的 printf 方法还提供了本地化的支持。
下面我们来看一个简单的例子.
System.out.printf("格式化数字例子:%1$,30.6f", 9876543210.0123456789);结果如下:
格式化数字例子: 9,876,543,210.012346%1$,30.6f 被称为格式符(format specifier), 格式符由以下几部分组成:
%[argument_index$][flags][width][.precision]conversion% 1$ , 30 .6 f
- %是必须的, 任何格式符都由百分号开始.
- argument_index是可选的, 它表示 printf 方法参数的索引, 第一个参数是1$, 第二个是2$,...
- flags是可选的, flags 依赖于 conversion, 详见下表.
- width是可选的, 表示输出数字的宽度.
- precision可选的, 表示小数位数.
- conversion是必须的, 表示如何格式化参数, 详见下表.
Java 支持如下转换符(conversion).
如果参数是 null, 结果为 false
如果参数是布尔型, 结果是 String.valueOf(arg)h/H任意类型如果参数是 null, 结果为 null,
否则为Integer.toHexString(arg.hashCode())s/S任意类型如果参数是 null, 结果为 null,
如果参数实现了 Formattable, 结果为 arg.formatTo,
否则结果为 arg.toString()c/CcharUnicode 字符d整数整数o整数八进制整数x/X整数十六进制整数e/E浮点数科学记数法f浮点数浮点数g/G浮点数浮点数或科学记数法取决于小数位数a/A浮点数十六进制浮点数t/T日期和时间格式化日期和时间的前缀,后缀见下表%百分号%n换行符与平台相关的换行符
日期和时间转换符(后缀)
Java 支持如下标志(flag)
下面是一个简单的例子.
public static void main(String[] args) {Calendar c = Calendar.getInstance();System.out.println("格式化整数");System.out.printf(Locale.CHINA, "中国: %,d%n", 987654321);System.out.printf(Locale.GERMAN, "德国: %,d%n", 987654321);System.out.println("\n\n格式化浮点数");System.out.printf(Locale.CHINA, "中国: %,.2f%n", 987654321.123456789);System.out.printf(Locale.GERMAN, "德国: %,.2f%n", 987654321.123456789);System.out.println("\n\n格式化日期和时间");System.out.printf(Locale.CHINA, "中国: %tc%n", c);System.out.printf(Locale.GERMAN, "德国: %tc%n", c);System.out.printf(Locale.CHINA, "中国: %tF%n", c);System.out.printf(Locale.GERMAN, "德国: %tF%n", c);System.out.printf(Locale.CHINA, "中国: %1$tY/%1$tm/%1$td%n", c);System.out.printf(Locale.GERMAN, "德国: %1$tY/%1$tm/%1$td%n", c);System.out.println("\n\n格式化消息");System.out.printf("你好,%n我叫 %1$s.%n我的生日是 %2$tF.%n", "尚波", c);}
结果如下:
格式化整数中国: 987,654,321德国: 987.654.321格式化浮点数中国: 987,654,321.12德国: 987.654.321,12格式化日期和时间中国: 星期一 五月 21 17:05:47 GMT+08:00 2012德国: Mo Mai 21 17:05:47 GMT+08:00 2012中国: 2012-05-21德国: 2012-05-21中国: 2012/05/21德国: 2012/05/21格式化消息你好,我叫 尚波.我的生日是 2012-05-21.从中我们可以看到, 有部分转换符是本地敏感的, 如: 星期名, 月份名, 千分位等.
上面的例子中, 我们将格式化的结果输出到标准输出流, 我们还可以
- 使用 System.err.printf(), 将格式化的结果输出到标准错误输出流.
- 使用 String.format(), 将格式化的结果保存到一个String变量中.
- 使用 Formatter类, 我们可以将格式化的结果输出到文件, 输出流等, 或添加到 StringBuilder, StringBuffer等.
---更多参见:Java 精萃
-- 声 明:转载请注明出处
-- Last Updated on 2012-05-21
-- Written by ShangBo on 2012-04-26
-- End
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- 格式化输出
- CDatabase::ExecuteSQL()
- 监听控件值的改变
- 进程与线程的区别
- Spring StoredProcedure for Oracle cursor
- iPhone开发--UIActionSheet的按钮不灵敏
- 格式化输出
- poj 1436 Horizontally Visible Segments(线段树 区间的覆盖关系)
- Nginx目录设置访问验证
- Spring+Hibernate配置多数据源
- 【Matlab】数据降维工具箱drtoolbox
- INF SourceDisksNames Section 和 SourceDisksFiles Section详解
- Linux 学习笔记
- 348 - Optimal Array Multiplication Sequence
- http发送get请求的总结