例子来自:https://www.runoob.com/w3cnote/java-printf-formate-demo.html
printf 方法的第一个参数为输出的格式,第二个参数是可变长的,表示待输出的数据对象
// 支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,3$表示第3个字符串
System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");
输出为
Name = Zhang san
%num$为占位符:
- %1$代表的是 “Name”
- %2$代表的是"san"
- %3$代表的是"Zhang"
以下例子为年月日的格式化,与上述内容同理:
/*** 输出日期类型***/
// %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
Date date = new Date();
long dataL = date.getTime();
System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
System.out.printf("%1$s %2$tB %2$td, %2$tY%n", "Due date:", date);
//使用 < 标志,表明先前被格式化的参数要被再次使用
System.out.printf("%s %tB %<te, %<tY%n", "Due date:", date);
System.out.printf("本地月份简称:%tb%n",date);
System.out.printf("本地月份全称:%tB%n",date);
输出为
21-11-04; 21-11-04
2021-November-04; 2021-Nov-04
Due date: November 4, 2021
Due date: November 4, 2021
本地月份简称:Nov
本地月份全称:November
%t之后用:
- j为一年的天数
- b为月份简称,B为月份全称
- a为星期简称,A为星期全称
- C为年前两位,y为年后两位,Y为四位数年份
- m为月份,d为日(二位,不够补零),e为日(一位不补零)
此外,%n 和 \n 的区别如下:
转自:https://zhidao.baidu.com/question/70591997.html
- %n会根据平台,自动转化成合适的换行符。Unix系统下的换行符是\n,Windows系统下的换行符是\r\n,%n是这两种换行符的整合,在不同平台下有不同的行为,通用性更好。
- \n适用于大部分平台
- %n只能用在printf语句中,无法用在println和print中