📜  Java.util.Formatter类(1)

📅  最后修改于: 2023-12-03 14:42:21.519000             🧑  作者: Mango

Java.util.Formatter类

Java.util.Formatter类是一个用于格式化文本输出的类,它允许我们对不同类型的数据进行格式化操作,然后输出到不同的目的地,如文件,控制台,网络等。它的主要优点是可以使用占位符和修饰符指定输出的格式,同时还支持本地化。

格式化字符串

Formatter类提供了一种类似于C语言中printf函数的方式来格式化字符串。我们可以使用“%”来表示一个占位符,并为其指定不同的修饰符,如宽度,小数位数等。下面是一个简单的示例:

Formatter formatter = new Formatter();
formatter.format("Hello, %s! Your balance is $%,.2f.", "John", 1234.567);
System.out.println(formatter.toString());

输出结果为:

Hello, John! Your balance is $1,234.57.

在上面这个示例中,我们使用了“%s”表示字符串类型的占位符,使用“%,.2f”表示浮点数类型的占位符,其中“,”表示数值分组(如1,234),“.2”表示要保留2位小数。

控制输出宽度和精度

除了上面我们展示的占位符和修饰符之外,Formatter类还支持其他一些修饰符来控制输出宽度和精度。例如,我们可以使用“%20s”来指定字符串类型的占位符宽度为20,如果字符串长度不足20,则在其左侧填充空格。

System.out.printf("Hello, %20s!", "John");

输出结果为:

Hello,                John!

类似地,我们可以使用“%-20s”来进行右侧填充空格。如果我们想要控制输出的精度,可以使用“%.2f”来表示要保留2位小数:

System.out.printf("Your balance is $%.2f.", 1234.567);

输出结果为:

Your balance is $1234.57.
本地化

Java.util.Formatter类也支持本地化,可以通过设置Locale对象来进行国际化。例如,在中文环境中,我们可以使用如下代码来输出一个日期格式:

Formatter formatter = new Formatter(Locale.CHINA);
Date date = new Date();
formatter.format("现在的时间是:%1$tY年%1$tm月%1$td日 %1$tT。", date);
System.out.println(formatter.toString());

输出结果为:

现在的时间是:2022年02月15日 10:18:47。

在上面这个示例中,我们设置了Locale对象为中国(Locale.CHINA),然后使用“%1$tY年%1$tm月%1$td日 %1$tT”表示日期时间类型的占位符,后面的“%1”表示使用第一个参数date,然后分别给年月日和时间指定了格式。

总结

Java.util.Formatter类是一个用于格式化文本输出的强大工具,它允许我们对不同类型的数据进行格式化操作,同时还支持占位符,修饰符和本地化等功能。它可以帮助我们生成漂亮,易读和易维护的输出结果,特别是在处理大量数据和生成报表时非常有用。