String.format用法

String.format

​ String的format 方法我们都很熟悉,但是它能干什么?在我的印象中可以格式化数字,但是它很强大,可以当作占位符,格式化字符串和数字,可以格式化日期。

思考

​ 如果用户对象中要写一个自我介绍的方法,你会怎么写?通常的写方法就是直接用变量和字符串拼接起来,但是也可以用String.format 方法,用占位符替代变量,只用一个字符串就可以拼好。

字符串拼接如下:

name +"来自"+adress+",年龄" +age+",性别"+sex;//字符串是不可改变的,这里已经声明了3个字符串,整体拼接好至少要4个字符串变量,并且字符串存储在方法区的字符常量池中。

format 拼接如下:

String.format("%s来自%s,年龄 %d,性别 %s", adress, age, sex);//代码上是出现一个字符
1.占位符类型使用

占位符解释

占位符解释示例
%s字符串“你好”
%c字符类型‘g’
%b布尔类型true
%d整数类型(十进制)66
%x整数类型(十六进制)FF
%o整数类型(八进制)77
%f浮点类型6.6
%a十六进制浮点类型FF.35AE
%e指数类型9.38e+5
%g通用浮点类型(f和e类型中较短的)
%h散列码
%n换行符
%tx日期与时间类型

使用方法:用相应的类型的占位符,把相应的参数放相应的参数上。

System.out.println(String.format("Hell %s","字符串"));
System.out.println(String.format("字符 %c",'A'));
System.out.println(String.format("布尔 %b",false));
System.out.println(String.format("十进制 %d",10));
System.out.println(String.format("十六进制 %x",10));
System.out.println(String.format("八进制 %o",10));
System.out.println(String.format("浮点 %f",2.2));
System.out.println(String.format("十六进制浮点 %a",10.8));
System.out.println(String.format("指数类型 %e",10e+5));
System.out.println(String.format("通用浮点类型 %g",10.8));
System.out.println(String.format("散列码 %h",'K'));
System.out.println(String.format("换行符 %n 你好"));

运行结果如下:(有的起到是占位符的作用,有的是转换的作用。)

Hell 字符串
字符 A
布尔 false
十进制 10
十六进制 a
八进制 12
浮点 2.200000
十六进制浮点 0x1.599999999999ap3
指数类型 1.000000e+06
通用浮点类型 10.8000
散列码 4b
换行符 
 你好
2.常用标识
标识解释
+为正数或负数添加符号(负数已经有符号,实际就是给正数添加+符号)
0在数字位数不够的地方补上0(针对整数)
空格在位数不够的地方补上空格
,对数字分组,三位一隔,只可以用于十进制(针对整数)
(使用括号将去掉负号的负数包含进来(针对负数)
#让十六进制的数字加上OX,八进制的数字加上o;辅助%x和%o的使用
,相当于一种对数字进制的补充说明提示
<格式化前一个转换符锁描述的参数
-左对齐,不够位数的地方补上空格

用法样例:

System.out.println(String.format("数字正负:%+d %d %+d %d",6,6,-6,-6));
System.out.println(String.format("数字位数不够上0:%05d ",6));
System.out.println(String.format("数字位数不够上0:%02f ",6.1));
System.out.println(String.format(",数字分组:%,d ",1000000));
System.out.println(String.format("括号用法:%(d",-8888));
System.out.println(String.format("#括号用法(十六进制):%#x",12));
//"%<3.1f"作用的对象是前一个"%f"对应的参数
System.out.println(String.format("<括号用法:%f %<3.1f",3.1415,3.5));
System.out.println(String.format("左对齐:%-19d",8888));

执行结果:

数字正负:+6 6 -6 -6
数字位数不够上0:00006 
数字位数不够上0:6.10 
,数字分组:1,000,000 
括号用法:(8888)
#括号用法(十六进制):0xc
<括号用法:3.141500 3.1
左对齐:8888 
3.格式化日期
标识解释
c包括全部日期和时间信息
F"年-月-日"格式
D'月/日/年’格式
r“HH:MM:SS PM”格式(12时制)
T“HH:MM:SS”格式(24时制)
R“HH:MM”格式(24时制)

使用样例:

System.out.println(String.format("全部日期和时间信息:%tc",new Date()));
System.out.println(String.format("年-月-日格式:%tF",new Date()));
System.out.println(String.format("月/日/年格式:%tD",new Date()));
System.out.println(String.format("HH:MM:SS PM格式(12时制):%tr",new Date()));
System.out.println(String.format("HH:MM:SS格式(24时制):%tT",new Date()));
System.out.println(String.format("HH:MM格式(24时制):%tR",new Date()));

输出结果:

全部日期和时间信息:星期四 六月 29 18:28:59 CST 2023
年-月-日格式:2023-06-29
月/日/年格式:06/29/23
HH:MM:SS PM格式(12时制):06:28:59 下午
HH:MM:SS格式(24时制):18:28:59
HH:MM格式(24时制):18:2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苹水相峰

你的打赏是对我最大的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值