9.7 设置字符串的格式

我们在 3.6 节中学习了如何用 printf 以特定的格式显示输出。在有些情况下,程序需要创建特定格式的字符串,但不马上显示它们,甚至根本不显示。例如,下面的方法返回了一个以 12 小时制表示时间的字符串:

  1. public static String timeString(int hour, int minute) {
  2. String ampm;
  3. if (hour < 12) {
  4. ampm = "AM";
  5. if (hour == 0) {
  6. hour = 12; // 午夜
  7. }
  8. } else {
  9. ampm = "PM";
  10. hour = hour - 12;
  11. }
  12. return String.format("%02d:%02d %s", hour, minute, ampm);
  13. }

String.format 接受的参数与 System.out.printf 相同:一个格式说明符和一系列的值。主要的差别在于,System.out.printf 将结果显示到屏幕上,而 String.format 创建一个新的字符串,但什么都不显示。

在这个示例中,格式说明符 %02d 表示将整数显示为两位(不够两位就添加前导零),因此 timeString(19, 5) 返回字符串 "07:05 PM"