String.format(String format, Object… args)字符串格式化。预先设置字符串格式,然后对相应的参数格式化。
常用格式化用到的数据类型
| 转换符 |
详细说明 |
示例 |
| %s |
字符串类型 |
“字符串” |
| %c |
字符类型 |
‘m’ |
| %b |
布尔类型 |
true |
| %d |
整数类型(十进制) |
88 |
| %x |
整数类型(十六进制) |
FF |
| %o |
整数类型(八进制) |
77 |
| %f |
浮点类型 |
8.888 |
| %a |
十六进制浮点类型 |
FF.35AE |
| %e |
指数类型 |
9.38e+5 |
| %g |
通用浮点类型(f和e类型中较短的) |
不举例(基本用不到) |
| %h |
散列码 |
不举例(基本用不到) |
| %% |
百分比类型 |
%(%特殊字符%%才能显示%) |
| %n |
换行符 |
不举例(基本用不到) |
| %tx |
日期与时间类型(x代表不同的日期与时间转换符) |
不举例(基本用不到) |
输出示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| String str=null; str=String.format("Hi,%s", "小超"); System.out.println(str); str=String.format("Hi,%s %s %s", "小超","是个","大帅哥"); System.out.println(str); System.out.printf("字母c的大写是:%c %n", 'C'); System.out.printf("布尔结果是:%b %n", "小超".equal("帅哥")); System.out.printf("100的一半是:%d %n", 100/2); System.out.printf("100的16进制数是:%x %n", 100); System.out.printf("100的8进制数是:%o %n", 100); System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85); System.out.printf("上面价格的16进制数是:%a %n", 50*0.85); System.out.printf("上面价格的指数表示:%e %n", 50*0.85); System.out.printf("上面价格的指数和浮点数结果的长度较短的是:%g %n", 50*0.85); System.out.printf("上面的折扣是%d%% %n", 85); System.out.printf("字母A的散列码是:%h %n", 'A');
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| Hi,小超 Hi,小超 是个 大帅哥 字母c的大写是:C 布尔的结果是:false 100的一半是:50 100的16进制数是:64 100的8进制数是:144 50元的书打8.5折扣是:42.500000 元 上面价格的16进制数是:0x1.54p5 上面价格的指数表示:4.250000e+01 上面价格的指数和浮点数结果的长度较短的是:42.5000 上面的折扣是85% 字母A的散列码是:41
|
搭配转换符还有实现高级功能
| 标志 |
说明 |
示例 |
结果 |
| + |
为正数或者负数添加符号 |
(“%+d”,15) |
+15 |
| 0 |
数字前面补0(加密常用) |
(“%04d”, 99) |
0099 |
| 空格 |
在整数之前添加指定数量的空格 |
(“% 4d”, 99) |
99 |
| , |
以“,”对数字分组(常用显示金额) |
(“%,f”, 9999.99) |
9,999.990000 |
| ( |
使用括号包含负数 |
(“%(f”, -99.99) |
(99.990000) |
| # |
如果是浮点数则包含小数点,如果是16进制或8进制则添加0x或0 |
(“%#x”, 99)(“%#o”, 99) |
0x63 0143 |
| < |
格式化前一个转换符所描述的参数 |
(“%f和%<3.2f”, 99.45) |
99.450000和99.45 |
| $ |
$符号前加数字,可以取第几个参数 |
(“%d,%1$s”,99,”abc”)和(“%d,%2$s”,99,”abc”) |
99,99和99,abc |
日期转换符
| 标志 |
说明 |
示例 |
| c |
包括全部日期和时间信息 |
星期六 十月 27 14:21:20 CST 2007 |
| F |
“年-月-日”格式 |
2007-10-27 |
| D |
“月/日/年”格式 |
10/27/07 |
| r |
“HH:MM:SS PM”格式(12时制) |
02:25:51 下午 |
| T |
“HH:MM:SS”格式(24时制) |
14:28:16 |
| R |
“HH:MM”格式(24时制) |
14:28 |
示例
1 2 3 4 5 6 7 8 9 10 11 12 13
| Date date=new Date();
System.out.printf("全部日期和时间信息:%tc%n",date);
System.out.printf("年-月-日格式:%tF%n",date);
System.out.printf("月/日/年格式:%tD%n",date);
System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);
System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);
System.out.printf("HH:MM格式(24时制):%tR",date);
|
结果
1 2 3 4 5 6
| 全部日期和时间信息:星期三 九月 21 22:43:36 CST 2016 年-月-日格式:2016-09-21 月/日/年格式:16/10/21 HH:MM:SS PM格式(12时制):10:43:36 下午 HH:MM:SS格式(24时制):22:43:36 HH:MM格式(24时制):22:43
|