Java printf()–将格式化的字符串打印到控制台

时间:2020-02-23 14:36:45  来源:igfitidea点击:

Java printf()

  • printf()方法不仅在C语言中,而且在Java中。

  • 此方法属于PrintStream类。

  • 它用于使用各种格式说明符来打印格式化的字符串。

语法

以下是printf()方法可用的语法:

System.out.printf(string);
System.out.printf(format, arguments);
System.out.printf(locale, format, arguments);

第一个不做任何格式化,就像println()方法一样。

System.out.format()与System.out.printf()方法相同。

String.format()和System.out.printf()之间的区别

  • String.format()返回格式化的字符串。
    System.out.printf()也将格式化的字符串打印到控制台。

  • printf()使用java.util.Formatter类来解析格式字符串并生成输出。

格式说明符

让我们看一下可用于printf的格式说明符:

  • %c个字符
  • %d个十进制(整数)数字(以10为底)
  • %e指数浮点数
  • %f个浮点数
  • %i整数(以10为底)
  • %o八进制数(以8为底)
  • %s字串
  • %u无符号十进制(整数)数字
  • %x十六进制数字(以16为基)
  • %t格式化日期/时间
  • %%打印百分号
  • \%打印百分号

注意:%n或者\ n在printf()中用作行分隔符。

转义字符

以下是printf()中可用的转义字符:

  • \ b退格键
  • \ f下一行第一个字符从当前行最后一个字符的右边开始
  • \ n换行符
  • \ r回车
  • \ t标签
  • \反斜杠

格式说明符完整语法

让我们看一下带有扩展集的格式说明符的完整语法:

%<flags><width><.precision>specifier

可以将标志设置为+(用于右对齐)和–(用于左对齐)。

接下来,启动您的Jshell并开始使用printf()

数字格式

这是一个例子:

|  Welcome to JShell -- Version 12.0.1
|  For an introduction type: /help intro

jshell> int x = 10
x ==> 10

jshell> System.out.printf("Formatted output is: %d %d%n", x, -x)
Formatted output is: 10 -10

让我们使用一些精确的格式:

jshell> float y = 2.28f
y ==> 2.28

jshell> System.out.printf("Precision formatting upto 4 decimal places %.4f\n",y)

Precision formatting upto 4 decimal places 2.2800

jshell> float z = 3.147293165f
z ==> 3.147293

jshell> System.out.printf("Precision formatting upto 2 decimal places %.2f\n",z)

Precision formatting upto 2 decimal places 3.15

如您所见,在第二种情况下,它四舍五入为下一个小数。

宽度说明符,对齐,用零填充

在本节中,我们将为每个示例提供三个示例:

jshell> System.out.printf("'%5.2f'%n", 2.28);
' 2.28'

如您所见,宽度说明符分配5个字符的宽度。
默认情况下,内容右对齐。

用零填充

第一个字符左侧的空白可以用零填充,如下所示:

jshell> System.out.printf("'%05.2f'%n", 2.28);
'02.28'

jshell> System.out.printf("'%010.2f'%n", 2.28);
'0000002.28'

jshell> System.out.printf("'%010.2f'%n", -2.28);
'-000002.28'

jshell> System.out.printf("'%010.2f'%n", 1234567.89);
'1234567.89'

jshell> System.out.printf("'%010.2f'%n", -1234567.89);
'-1234567.89'

对齐默认情况下,它是一个+,表示右对齐。

jshell> System.out.printf("'%10.2f'%n", 2.28);
'      2.28'

下面的代码向左对齐:

jshell> System.out.printf("'%-10.2f'%n", 2.28);
'2.28      '

使用逗号和语言环境:

jshell> System.out.printf(Locale.US, "%,d %n", 5000);
5,000

字符串,布尔格式

让我们看一下一些基本示例的字符串格式:

jshell> System.out.printf("%s %s!%n","Hello","World");
Hello World!
jshell> System.out.printf("%s\f%s!%n","Hello","World!");
Hello
   World!!
jshell> System.out.printf("%s\%s!%n","Hello","World!");
Hello\World!!

大写:

jshell> System.out.printf("%s %S!%n","Hello","World");
Hello WORLD!

布尔格式的示例如下:

jshell> System.out.printf("%b%n", false);
false

jshell> System.out.printf("%b%n", 0.5);
true

jshell> System.out.printf("%b%n", "false");
true

时间格式

'H','M','S'" –小时,分钟,秒''L','N' –分别以毫秒和纳秒为单位表示时间" p" – AM/PMz -打印出与GMT的区别。

jshell> Date date = new Date();
date ==> Fri Apr 19 02:15:36 IST 2019

jshell> System.out.printf("%tT%n", date);
02:15:36

jshell> System.out.printf("H : %tH, M: %tM, S: %tS%n",date,date,date)
H : 02, M: 15, S: 36

后者需要许多相同的论点。
相反,我们可以将它们替换为一个:

jshell> System.out.printf("%1$tH:%1$tM:%1$tS %1$Tp GMT %1$tz  %n", date)
02:15:36 AM GMT +0530

日期格式

日期格式具有以下特殊字符

A/a –全天/缩写天B/b –整月/缩写月d –格式化两位数字的月份m –格式化两位数字的Y –全年/年份的最后两位数字j –一年中的一天

jshell> System.out.printf("%s %tB %<te, %<tY", "Current date: ", date);
Current date:  April 19, 2019

jshell> System.out.printf("%1$td.%1$tm.%1$ty %n", date);
19.04.19

jshell> System.out.printf("%s %tb %<te, %<ty", "Current date: ", date);
Current date:  Apr 19, 19