String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。
format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
显示不同转换符实现不同数据类型到字符串的转换,如图所示。
转 换 符 |
说 明 |
示 例 |
%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代表不同的日期与时间转换符 |
测试用例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public static void main(String[] args) { 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( "字母a的大写是:%c %n" , 'A' ); System.out.printf( "3>7的结果是:%b %n" , 3 > 7 ); 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,王南:王力.王张 字母a的大写是:A 3 > 7 的结果是: 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 |