1、动态拼接字符串
在项目中用的都比较多,最近用到了两种:String.format 和 MessageFormat。
String.format用法
public void testString() {
String str=String.format("%s测试%d,日期%tc","我", 24,new Date());
System.out.println(str);
}
MessageFormat.format用法
@Test
public void testMessge() {
String str=MessageFormat.format("{0}测试{1},日期{2}", "我",24,new Date());
System.out.println(str);
}
推荐:MessageFormat.format。
2、String.format转换符
转 换 符
描述
示 例
%s
字符串类型
"mingrisoft"
%c
字符类型
'm'
%b
布尔类型
true
%d
整数类型(十进制)
99
%x
整数类型(十六进制)
FF
%o
整数类型(八进制)
77
%f
浮点类型
99.99
%a
十六进制浮点类型
FF.35AE
%e
指数类型
9.38e+5
%g
通用浮点类型(f和e类型中较短的)
%h
散列码
%%
百分比类型
%
%n
换行符
%tx
日期与时间类型(x代表不同的日期与时间转换符
2.1日期和事件字符串格式化
转 换 符
说 明
示 例
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
示例:
@Test
public void testDate() {
Date date = new Date();
// c的使用
System.out.println(String.format("全部日期和时间信息:%tc%n", date));
// f的使用
System.out.println(String.format("年-月-日格式:%tF%n", date));
// d的使用
System.out.println(String.format("月/日/年格式:%tD%n", date));
// r的使用
System.out.println(String.format("HH:MM:SS PM格式(12时制):%tr%n", date));
// t的使用
System.out.println(String.format("HH:MM:SS格式(24时制):%tT%n", date));
// R的使用
System.out.println(String.format("HH:MM格式(24时制):%tR", date));
}
2.2搭配转换符的标志
标 志
说 明
示 例
结 果
+
为正数或者负数添加符号
("%+d",15)
+15
−
左对齐
("%-5d",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
$
被格式化的参数索引
("%1$d,%2$s", 99,"abc")
99,abc
@Test
public void testCollocation() {
//$使用
System.out.println(String.format("格式参数$的使用:%1$d,%2$s", 99,"abc"));
//+使用
System.out.printf(String.format("显示正负数的符号:%+d与%d%n", 99,-99));
//补O使用
System.out.printf(String.format("最牛的编号是:%03d%n", 7));
//空格使用
System.out.printf(String.format("Tab键的效果是:% 8d%n", 7));
//.使用
System.out.printf(String.format("整数分组的效果是:%,d%n", 9989997));
//空格和小数点后面个数
System.out.printf(String.format("一本书的价格是:% 50.5f元%n", 49.8));
}