1. String.format()字符串两个重载方法
// 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
public static String format(String format, Object... args) {
return new Formatter().format(format, args).toString();
}
// 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
public static String format(Locale l, String format, Object... args) {
return new Formatter(l).format(format, args).toString();
}
2. 小demo
@Test
public void url(){
String url = "http://www.baidu.com?name=%s";
String format = String.format(url, "你好呀");
log.info("替换后的url:{}",format);
}
输出结果:
替换后的url:http://www.baidu.com?name=你好呀
3. 占位符类型
转换符 | 详细说明 | 示例 |
%s | 字符串类型 | “啊啊啊” |
%c | 字符类型 | ‘s’ |
%b | 布尔类型 | true |
%d | 整数类型(十进制) | 88 |
%x | 整数类型(十六进制) | FF |
%o | 整数类型(八进制) | 77 |
%f | 浮点类型 | 7.777 |
%a | 十六进制浮点类型 | FF.35AE |
%e | 指数类型 | 9.38e+5 |
%g | 通用浮点类型(f和e类型中较短的) | |
%h | 散列码 | |
%d% | 百分比类型 | |
%n | 换行符 | |
%tx | 日期与时间类型 | |
4. 示例demo
@Test
public void allTest(){
String str;
// %s
System.out.println("-------------%s-------------");
str = String.format("Hi,%s", "一条龙服务");
System.out.println(str);
// %c %n
System.out.println("-------------%c %n-------------");
str = String.format("字母c的大写是:%c %n", 'C');
System.out.println(str);
// %b
System.out.println("-------------%b-------------");
str = String.format("布尔结果是:%b", 3>2);
System.out.println(str);
// %d
System.out.println("-------------%d-------------");
str = String.format("100的一半是:%d", 100/2);
System.out.println(str);
// %x
System.out.println("-------------%x-------------");
str = String.format("100的16进制数是:%x", 100);
System.out.println(str);
// %o
System.out.println("-------------%o-------------");
str = String.format("100的8进制数是:%o", 100);
System.out.println(str);
// %f
System.out.println("-------------%s-------------");
str = String.format("50元的书打8.5折扣是:%f 元", 50 * 0.85);
System.out.println(str);
// %a
System.out.println("-------------%a-------------");
str = String.format("上面价格的16进制数是:%a", 50 * 0.85);
System.out.println(str);
// %e
System.out.println("-------------%e-------------");
str = String.format("上面价格的指数表示:%e", 50 * 0.85);
System.out.println(str);
// %g
System.out.println("-------------%g-------------");
str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.85);
System.out.println(str);
// %d%
System.out.println("-------------%d%-------------");
str = String.format("上面的折扣是:%d%%", 85);
System.out.println(str);
// %h
System.out.println("-------------%h-------------");
str = String.format("字母A的散列码是:%h",'A');
System.out.println(str);
}
输出结果:
-------------%s-------------
Hi,一条龙服务
-------------%c %n-------------
字母c的大写是:C
-------------%b-------------
布尔结果是:true
-------------%d-------------
100的一半是:50
-------------%x-------------
100的16进制数是:64
-------------%o-------------
100的8进制数是:144
-------------%s-------------
50元的书打8.5折扣是:42.500000 元
-------------%a-------------
上面价格的16进制数是:0x1.54p5
-------------%e-------------
上面价格的指数表示:4.250000e+01
-------------%g-------------
上面价格的指数和浮点数结果的长度较短的是:42.5000
-------------%d%-------------
上面的折扣是:85%
-------------%h-------------
字母A的散列码是:41