System.out.printf(String format, Object ... args);
其中format标准的格式写法:
%[argument_index$][flags][width][.precision]conversion
argument_index是一个十进制整数,表示参数在参数列表中的位置。 第一个参数为“1”,第二个为“2”,第二 个 为“2”等。
flags是修改输出格式的一组字符。
width是一个正十进制整数,表示要写入输出的最小字符数。
precision通常用于限制字符数的非负十进制整数。
conversion
输出数字与字符:
例子:
double d = 345.678;
String s = "你好!";
int i = 1234; //"%"表示进行格式化输出,"%"之后的内容为格式的定义。
System.out.printf("输出一个浮点数:%f,一个整数:%d,一个字符串:%s",d,i,s); //可以输出多个变量,注意顺序。
System.out.println();
System.out.printf("字符串:%2$10s,%1$+-20.4f",d,s); //"X$"表示第几个变量。
输出:
输出一个浮点数:345.678000,一个整数:1234,一个字符串:你好!
字符串: 你好!,+345.6780
以%1$+-20.4d输出为例:
argument_index$:1$
flags: +-
width: 20
.precision: .4
conversion f
格式字符 conversion
%s表示输出字符串,也就是将后面的字符串替换模式中的%s
%n表示换行
%S将字符串以大写形式输出
%d表示将整数格式化为10进制整数
%o表示将整数格式化为8进制整数
%x表示将整数格式化为16进制整数
%X表示将整数格式化为16进制整数,并且字母变成大写形式
%#x表示输出带有十六进制标志的整数
%e表示以科学技术法输出浮点数
%E表示以科学技术法输出浮点数,并且为大写形式
%f表示以十进制格式化输出浮点数
......
还有很多。。。。
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示,如:
printf("%f%%", 1.0/3);
输出0.333333%。
输出日期与时间
/*** 输出日期类型***/
// %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
Date date = new Date();
long dataL = date.getTime();
// 格式化年月日
// %t之后用y表示输出日期的年份(2位数的年,如99)
// %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL)
// %t之后用Y表示输出日期的年份(4位数的年),
// %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
// 以下是常见的日期组合
// %t之后用D表示以 "%tm/%td/%ty"格式化日期
System.out.printf("%1$tD%n", date);
//%t之后用F表示以"%tY-%tm-%td"格式化日期
System.out.printf("%1$tF%n", date);
/*** 输出时间类型***/
// 输出时分秒
// %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),
// %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒
System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
// %t之后用L表示输出时间的秒中的毫秒
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
// %t之后p表示输出时间的上午或下午信息
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);
// 以下是常见的时间组合
// %t之后用R表示以"%tH:%tM"格式化时间
System.out.printf("%1$tR%n", date);
// %t之后用T表示以"%tH:%tM:%tS"格式化时间
System.out.printf("%1$tT%n", date);
// %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间
System.out.printf("%1$tr%n", date);
/*** 输出星期***/
// %t之后用A表示得到星期几的全称
System.out.printf("%1$tF %1$tA%n", date);
// %t之后用a表示得到星期几的简称
System.out.printf("%1$tF %1$ta%n", date);
// 输出时间日期的完整信息
System.out.printf("%1$tc%n", date);