java printf

【简介】

printf System.out.printf() 是 Java 5 开始引入的,用法类似 C语言的 printf() 函数。

目录

【简介】

【API】

【附录:flags标志说明】

【附录:conversion转换符说明】

【附录:日期时间转换符说明】


【API】

    ①PrintStream	printf(Locale l, String format, Object... args)
        使用指定的格式字符串和参数将格式化的字符串写入此输出流的便利方法。
    ②PrintStream	printf(String format, Object... args)
        使用指定的格式字符串和参数将格式化的字符串写入此输出流的便利方法。

1.format 格式:%[argument_index$][flags][width][.precision]conversion

①argument_index:是十进制的整数,表示参数列表中第i个参数。
    举例:System.out.printf("%1$s %2$tB %2$te, %2$tY","Due date:",new Date());
    说明:1$表示第一个参数,也就是"Due date:"
②flags:指定格式化输出外观的各种标志。
③width:是十进制整数,表示输出的字符个数。
    举例:double x=33.3; System.out.printf("%5.2f",x); 输出为:33.30
    说明:对于浮点数,包含小数点所占的一个字符和符号所占的一个字符。当实际的字符数小于指定的宽度时,根据上个参数flags指定的标志进行填充,如未指定,默认为空格。
④precision:是非负十进制整数,通常用于限制字符数。如上例。
⑤conversion:(必须)是一个字符,指定格式化参数。
举例:
@Test
    public void printfTest(){
//        System.out.printf("%tc",new Date());
        double x=19668889.999999;
        int y=-100;
        System.out.printf("%,9.2f",x);//19,668,890.00
        System.out.println();
        System.out.printf("%+9.2f",x);//+19668890.00
        System.out.println();
        System.out.printf("%(d",y);//(100)
        System.out.println();
        System.out.printf("%+d",y);//-100
    }
@Test
    public void dateTest(){
        Date date=new Date();
        System.out.printf("%tc \n",date);//星期五 三月 18 09:34:35 CST 2022
        System.out.printf("%tF \n",date);//2022-03-18
        System.out.printf("%tD \n",date);//03/18/22
        System.out.printf("%tT \n",date);//09:34:35
        System.out.printf("%tr \n",date);//09:34:35 上午
        System.out.printf("%tR \n",date);//09:34
        System.out.printf("%tY \n",date);//2022
        System.out.printf("%ty \n",date);//22
        System.out.printf("%tC \n",date);//20
        System.out.printf("%tB \n",date);//三月
        System.out.printf("%tb \n",date);//三月
        System.out.printf("%tm \n",date);//03
        System.out.printf("%td \n",date);//18
        System.out.printf("%te \n",date);//18
        System.out.printf("%tA \n",date);//星期五
        System.out.printf("%ta \n",date);//星期五
        System.out.printf("%tj \n",date);//077
        System.out.printf("%tH \n",date);//09
        System.out.printf("%tk \n",date);//9
        System.out.printf("====%tI \n",date);//09
        System.out.printf("%tl \n",date);//9
        System.out.printf("%tM \n",date);//39
        System.out.printf("%tS \n",date);//05
        System.out.printf("%tL \n",date);//920
        System.out.printf("%tN \n",date);//920000000
        System.out.printf("%tp \n",date);//上午
        System.out.printf("%tz \n",date);//+0800
        System.out.printf("%tZ \n",date);//CST
        System.out.printf("%ts \n",date);//1647567545
        System.out.printf("%tQ \n",date);//1647567545920


    }

 2.local 数字和日期的格式化规则是特定本地化环境的,local主要用于控制国际化行为。

举例:

    @Test
    public void test2(){
        System.out.printf(Locale.JAPAN,"%tc",new Date());//金 3 18 15:40:29 CST 2022
        System.out.println();
        System.out.printf(Locale.UK,"%tc",new Date());//Fri Mar 18 15:40:29 CST 2022
        System.out.println();
        System.out.printf(Locale.getDefault(),"%tc",new Date());//星期五 三月 18 15:40:29 CST 2022
        System.out.println();
        System.out.printf(Locale.CANADA,"%tc",new Date());//Fri Mar 18 15:42:22 CST 2022
        System.out.println();
        System.out.printf(Locale.TAIWAN,"%tc",new Date());//星期五 三月 18 15:42:22 CST 2022
        System.out.println();
        System.out.printf(Locale.FRANCE,"%tc",new Date());//ven. mars 18 15:42:22 CST 2022
        System.out.println();
        System.out.printf(Locale.ITALY,"%tc",new Date());//ven mar 18 15:42:22 CST 2022
    }

3.args 格式字符串中引用的参数

举例:

@Test
    public void test(){
        System.out.printf("%1$s %2$tB %2$te, %2$tY","Due date:",new Date());//Due date: 三月 18, 2022
        System.out.printf("%2$tB %2$te, %2$tY","Due date:",new Date());//三月 18, 2022
    }

【附录:flags标志说明】

标志目的示例
空格在正数之前添加空格| 3333.33|
0数字前面补0003333.33
+打印正数和负数的符号+3333.33
-左对齐(不指定-时,默认为右对齐)|3333.33 |
(将负数括在括号内-100 输出为(100)
,(英文逗号)添加分组分隔符,只对定点浮点数整数部分添加分组分隔符,小数部分不会添加3,333.33
#(对于f格式)包含小数点3,333.
#(对于x或o格式)添加前缀0x或00xcafe
$指定要格式化的参数索引。例如,%1 d d %1 dx 将以十进制和十六进制格式打印第1个参数159 9F
<<格式化前面说明的数值。例如,%d<%x 将以十进制和十六进制打印同一个值159 9F

【附录:conversion转换符说明】

注:下面的转换符前面都必须用 t/T 修饰。

转换符类型示例
d十进制整数159
x十六进制整数9f
o八进制整数237
f定点浮点数1.59e+01
e指数浮点数
g通用浮点数(e和f中较短的一个)
a16进制浮点数0x1.fccdp3
s字符串hello
c字符H
b布尔true
n与平台有关的换行符
h散列码42628b2
tx或Yx日期时间(T强制大写)已过时,建议使用 java.time 类。
%百分号%

【附录:日期时间转换符说明】

转换符类型示例
c完整的日期和时间
星期五 三月 18 09:34:35 CST 2022
F年月日
2022-03-18
D月/日/年
03/18/22
T24小时时间
09:34:35
r
12小时时间
09:34:35 上午
R
24小时时间,没有秒
09:34
Y
4位数字的年(前面补0)
2022
y
年的后两位数字(前面补0)
22
C年的前两位数字(前面补0)
20
B月的完整拼写
三月
b月的缩写
三月
m两位数字的月(前面补0)
03
d两位数字的日(前面补0)
18
e两位数字的日(前面不补0)
18
A星期几的完整拼写
星期五
a星期几的缩写
星期五
j三位数的年中第几天(前面补0),在001到366之间
077
H两位数字的小时(前面补0),在0到23之间
09
k两位数字的小时(前面不补0),在0到23之间
9
I(大写i)两位数字的小时(前面补0),在01到12之间
09
l(小写L)两位数字的小时(前面不补0),在1到12之间
9
M两位数字的分钟(前面补0)
39
S两位数字的秒(前面补0)
05
L三位数字的毫秒(前面补0)
920
N九位数字的毫微秒(前面补0)
920000000
p上午或下午的标志
上午
z从 GMT 起,RFC 822 数字位移
+0800
Z时区
CST
s从格林尼治时间 1970-01-01 00:00:00 起的秒数
1647567545
Q从格林尼治时间 1970-01-01 00:00:00 起的毫秒数
164756754592
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值