您的位置:

Java String.format()使用指南

一、String.format()概述

在Java中,String类的format()方法可以用于格式化字符串输出。它相当于C中的printf()函数,可以将格式化字符串中的占位符替换成指定的值。

具体来说,String.format()方法的第一个参数是一个格式字符串,其中的格式说明符指定了占位符的位置、宽度、精度等信息。第二个参数开始是占位符要替换的值。如果格式字符串中有多个占位符,则需要为每个占位符指定一个对应的值,多余的值将被忽略。

下面是一个简单的代码示例:

String name = "Alice";
int age = 20;
double height = 1.68;
String message = String.format("My name is %s, I'm %d years old, and I'm %.2f meters tall", name, age, height);
System.out.println(message);

上面的代码创建了一个字符串message,它使用了格式化字符串"My name is %s, I'm %d years old, and I'm %.2f meters tall",其中%s、%d和%.2f分别是对应的占位符。第二行调用了String.format()方法,使用name、age和height分别替换了这些占位符,并将结果输出到控制台。其输出结果为:

My name is Alice, I'm 20 years old, and I'm 1.68 meters tall

二、格式说明符

格式说明符是用来指定占位符的格式信息的字符串。它们由%字符和指定占位符类型的字符组成,中间可以包含各种选项和标志位。

下面是一些常用的格式说明符:

  • %s:字符串类型
  • %d:整数类型
  • %f:浮点数类型
  • %b:布尔类型
  • %c:字符类型
  • %n:换行符
  • %%:百分号

除了占位符类型,格式说明符还可以包含以下选项:

  • 宽度:指定占位符输出的最小宽度,如果输出的值长度不足,则会添加空格以达到指定的宽度。例如,%10d表示输出的整数至少是10位宽度,不足部分用空格填充。
  • 精度:用于限制输出的数字的小数位数,通常用于浮点数类型。例如,%.2f表示输出的浮点数只有2位小数。
  • 标志位:用于指定输出值的格式。例如,-表示左对齐,+表示在正数前显示加号,0表示用0填充不足的位数。

下面是一些示例:

int value = 123;
String.format("%10d", value);          // 输出:"       123"
String.format("%.2f", Math.PI);       // 输出:"3.14"
String.format("%+d", value);          // 输出:"+123"
String.format("%05d", value);         // 输出:"00123"

三、使用实例

1. 格式化日期和时间

String.format()方法也可以用于格式化日期和时间。Java中提供了SimpleDateFormat类来进行日期和时间的格式化。

下面是一个例子,将当前时间格式化为"yyyy-MM-dd HH:mm:ss"的形式:

Date now = new Date();
String formattedDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now);
System.out.println(formattedDate);

上面的代码首先获取当前时间,然后使用SimpleDateFormat类将时间格式化为指定的形式,最后将结果输出到控制台。输出结果类似于:

2022-01-01 12:34:56

2. 格式化十六进制数

String.format()方法还可以用于格式化整数为十六进制数,并且可以控制输出的位数。

例如,下面的代码将数字15格式化为4位的十六进制数:

int value = 15;
String hexString = String.format("%04X", value);
System.out.println(hexString);

输出结果为:

000F

3. 填充固定宽度

有时候需要输出一些固定宽度的字符串,不足的部分需要用空格填充。

下面的代码通过使用String.format()方法,输出一个二维数组,其中每个数字都是5位宽度:

int[][] data = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int[] row : data) {
    for (int value : row) {
        String formattedValue = String.format("%5d", value);
        System.out.print(formattedValue + " ");
    }
    System.out.println();
}

输出结果为:

    1     2     3 
    4     5     6 
    7     8     9 

四、小结

本文介绍了Java中String.format()方法的用法和格式说明符,以及使用实例。使用String.format()方法可以使输出的字符串更加美观和易读。