Java SE 5.0 沿用了 C 语言库函数中的 printf 方法
方法定义于 java.io.PrintStream中
用法
/*
*一般使用第二个方法
*方法参数:第一个为参数为输出格式,第二是输出的数据,为可变长参数
*转换符的使用:每一个以 % 字符开始的格式说明符都用相应的参数替换。f 表示浮点数,s 表示字符串,d 表示十进制整数。
*/
//字符串(%s)
System.out.printf("大家好,我是%s","涕笑三声"); //大家好,我是涕笑三声
//使用索引,指出要被格式化的参数索引。
//索引必须紧跟在 % 后面, 并以 $ 终止。
System.out.printf("%2$s %1$s","三声","涕笑"); //涕笑 三声
//%n实现换行(\n,\t等也可以使用)
System.out.printf("%1$s %n %2$s","涕笑","三声");
//十进制整数(%d)
//使用 , 实现整数分组
System.out.printf("%,d",1000000000); //1,000,000,000
//浮点数(%f)
System.out.printf("%f",1.1); //1.100000
//限制小数点后的位数
System.out.printf("%.2f",1.1); //1.10
//宽度的使用,5表示字符宽度
System.out.printf("%5.2f",1.1); //输出一个空格和1.10
//时间和日期
//%t表示格式化日期时间类型
//%T是时间日期的大写形式
//在%t之后用特定的字母表示不同的输出格式
System.out.printf("%tc %n",new Date()); //星期六 十二月 26 14:05:33 CST 2020
//年月日组合
System.out.printf("%1$tY/%1$tm/%1$td %n",new Date()); //2020/12/26
格式语法
转换符
标志
时间与日期转换符
图片截自《Java核心技术卷 I》
代码示例
/*输出字符串*/
// %s表示输出字符串 %S表示大写形式,%n换行
System.out.printf("%s %S","hello","world"); //hello WORLD
//使用参数索引,索引必须紧跟在 % 后面, 并以 $ 终止
System.out.printf("%2$s%1s","三声","涕笑"); //涕笑三声
/*boolean类型输出*/
System.out.printf("boolean %1$b %2$b",true,false); //boolean true false
/*输出整数*/
// %d表示十进制输出
System.out.printf("%d %d",-10,10); //-10 10
// %o表示将整数格式化为8进制整数
System.out.printf("%o %o",-10,10); //37777777766 12
// %x表示将整数格式化为16进制整数
System.out.printf("%x %x",-10,10); //fffffff6 a
// %X表示将整数格式化为16进制整数,并且字母编程大写形式
System.out.printf("%X %X",-10,10); //FFFFFFF6 A
/*浮点数输出*/
//%f表示格式化为浮点数
System.out.printf("%f %f",-10.132f,10.132d); //-10.132000 10.132000
//限制小数点后面的位数
System.out.printf("%.1f %.2f",-10.132f,10.132d); //-10.1 10.13
//%e表示以科学技术法输出浮点数
System.out.printf("%e %e",-10.132f,-10.132d); //-1.013200e+01 -1.013200e+01
//%E表示以科学技术法输出浮点数,并且为大写形式
System.out.printf("%E %E",-10.132f,-10.132d); //-1.013200E+01 -1.013200E+01
//%g表示通用浮点数
System.out.printf("%g %g",-10.13f,-10.132d); //-10.1300 -10.1320
//%a表示16进制浮点数
System.out.printf("%a %a",-10.132f,10.132d); //-0x1.443958p3 0x1.44395810624ddp3
//%a表示16进制浮点数,并且以大写形式
System.out.printf("%A %A",-10.132f,10.132d); //-0X1.443958P3 0X1.44395810624DDP3
/*标志的使用*/
System.out.printf("%1$+d,10); //+10
System.out.printf("%(.2f",-10.0); //(10.00)
/*宽度*/
System.out.printf("%6s","涕笑三声"); // 涕笑三声
System.out.printf("%8.2f",10.1); // 10.10
/*
*输出日期 %t表示格式化日期
* %T是时间日期的大写形式
* 在%t之后用转换符表示不同的输出格式
*%t之后用 c输出完整的日期和时间
* F输入ISO 8601日期
* D输出美国格式日期(月/日/年)
* T输出24小时时间
* r输出12小时时间
* R输出24小时时间没有秒
*/
Date date = new Date();
System.out.printf("%tc",date); //星期六 十二月 26 14:26:36 CST 2020
System.out.printf("%tF",date); //2020-12-26
System.out.printf("%tD",date); //12/26/20
System.out.printf("%TT",date); //14:28:12
System.out.printf("%tr",date); //02:29:08 下午
System.out.printf("%tR",date); //14:30
//年月日组合
System.out.printf("%1$tY/%1$tm/%1$td",date); //2020/12/26
System.out.printf("%1$tY/%1$tm/%1$td",date.getTime()); //2020/12/26
//时分秒组合
System.out.printf("%1$tH:%1$tM:%1$tS \t %2$tH:%2$tM:%2$tS",date,date.getTime()); //14:31:50 14:31:50
//输出星期
System.out.printf("%1$tA",date); //星期六