S07L39 – Java中的Printf,Java中的字符串格式化文档

Java 格式化与 printf( ) 和 String.format( )

Java 输出格式化的必备指南

介绍

Java 提供了强大而灵活的工具来格式化输出。无论您是在打印数值、字符串,甚至日期和时间,printf( ) 方法及其姊妹方法 String.format( ) 都提供了多种选项来控制输出的显示效果。本文讲解了 Java 格式化系统的基础知识 —— 包括格式字符串、flags、width、precision 以及 conversion characters —— 并通过示例和一个示例程序展示如何使用这些功能。

printf( ) 方法概述

在 Java 中,System.out.printf( ) 方法将格式化的字符串写入控制台。最简单的用法如下:

该方法的关键在于格式字符串及其随附的参数。格式字符串既包含字面字符,也包含指示如何格式化各个参数的格式说明符。

理解格式字符串

Java 中的格式字符串由两部分主要组成:

  • 字面字符 – 这些字符将按原样打印。
  • 格式说明符 – 这些说明符定义了传入参数的数据值的格式。

每个格式说明符遵循以下通用顺序:

(注意:大括号内的项目为可选参数。)

格式说明符的组成部分

  1. 标志:
    标志用于定制输出,常用的有:
    • -  : 左对齐输出,而不是默认的右对齐。
    • +  : 对正数包含加号(正数总会显示加或减号)。
    • 0  : 用零填充数值而非空格。
    • ,  : 使用逗号作为分组分隔符(适用于大于 1000 的数字)。
    • (空格) : 在正数前显示空格,或在负数前显示负号。
  2. 宽度:
    宽度说明符设置了要打印的最小字符数。此字段决定了为每个输出值分配的空间。在格式化数值时,请注意考虑额外的字符(例如逗号或小数点)。
  3. 精度:
    精度根据转换类型的不同具有不同的作用。对于浮点数,它设置小数点后显示的位数;对于字符串,则可以限制打印的字符数。在这两种情况下,数值可能会根据指定的精度进行四舍五入。
  4. 转换字符:
    转换字符用于确定数据类型的格式。示例包括:
    • d  : 十进制整数(适用于 byte, short, int 和 long)
    • f  : 浮点数(适用于 float 和 double)
    • c  : 字符(大写 C 会把字符转换为大写)
    • s  : 字符串(大写 S 会将整个字符串转换为大写)
    • h  : 哈希码(用于打印对象的引用值)
    • n  : 换行符(平台特定的换行字符;为保证跨平台性,总是使用 %n 而非 \n)

例如,考虑下面两个使用存储在 dblTotal 中的浮点值的打印语句:

使用 String.format( )

与 System.out.printf( ) 类似,String.format( ) 方法允许您创建一个可以赋值给变量的格式化字符串。用法与 printf( ) 完全相同。例如:

当您需要存储或进一步操作格式化字符串而不是立即打印它们时,这个功能尤其有用。

日期和时间的额外格式说明符

Java 的格式化机制还支持日期和时间的转换说明符。以下是一些示例:

  • tB – 与区域设置相关的月份全名。
  • td 或 te – 月中的天数(td 在必要时包含前导零,而 te 则不包含)。
  • ty 或 tY – 年份(ty 提供两位数字的年份,而 tY 提供四位数字的年份)。
  • tl – 12 小时制的小时数。
  • tM – 以两位数字表示的分钟数(在需要时添加前导零)。
  • tp – 与区域设置相关的 am/pm 标记(小写)。
  • tm – 以两位数字表示的月份。
  • tD – 日期格式化为 %tm%td%ty(例如,”05/29/06″)。

其他重要的格式构造包括:
• +  : 始终包含符号(正或负)。
• ,  : 插入与区域设置相关的分组分隔符。
• -  : 将格式化输出左对齐。
• .3  : 在小数点后显示三位数字。
• 10.3 : 分配一个宽度为十个字符的字段,默认右对齐,并在小数点后显示三位数字。

示例程序

为了将所有这些概念结合起来,请参考下面这个示例 Java 程序:

注意:在程序代码中,所有的 “<” 和 “>” 均已被替换为 “<" 和 ">“。

程序亮点

  • 数值格式化展示了零填充和逗号分组。
  • 浮点数格式化展示了精度控制和使用字段宽度进行对齐。
  • 日期和时间格式化利用转换字符生成与区域设置相关的输出。
  • 通过切换区域设置(例如使用 Locale.FRANCE),您可以控制小数点等细节。

结论

Java 的 printf( ) 和 String.format( ) 方法为开发人员提供了广泛的控制,能够决定数据的展示方式。从简单的数字格式化到更复杂的日期和时间转换,这些格式化工具对于创建精致、易读的控制台输出至关重要。通过掌握 flags、width、precision 和 conversion characters,您可以调整输出以满足功能性和美观性的要求。借助众多内置的说明符和选项,Java 的格式化功能帮助简化生成清晰且有效的用户界面或日志的过程。

祝您愉快地使用 Java 强大的格式化功能编程!

注意:本文由 AI 生成。







分享你的喜爱