Java printf()–将格式化的字符串打印到控制台
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