需求
可变字符串
public static void main(String[] args) {
String name = "张三";
String city = "深圳";
int age = 18;
String sex = "男";
String format = String.format("%s用户来自%s,年龄 %d,性别 %s.....", name, city, age, sex);
System.out.println(format);
}
String.format()字符串的方法
format(String format, Object… args):新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。
format(Locale locale, String format, Object… args):使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。
占位符类型
public static void main(String[] args) {
String str;
// %s Hi,布鲁斯
str = String.format("Hi,%s", "布鲁斯");
System.out.println(str);
// %c %n 字母c的大写是:C
str = String.format("字母c的大写是:%c %n", 'C');
System.out.println(str);
// %b 布尔结果是:true
str = String.format("布尔结果是:%b", 3>2);
System.out.println(str);
// %d 100的一半是:50
str = String.format("100的一半是:%d", 100/2);
System.out.println(str);
// %x 100的16进制数是:64
str = String.format("100的16进制数是:%x", 100);
System.out.println(str);
// %o 100的8进制数是:144
str = String.format("100的8进制数是:%o", 100);
System.out.println(str);
// %f 50元的书打8.5折扣是:42.500000 元
str = String.format("50元的书打8.5折扣是:%f 元", 50 * 0.85);
System.out.println(str);
// %a 上面价格的16进制数是:0x1.54p5
str = String.format("上面价格的16进制数是:%a", 50 * 0.85);
System.out.println(str);
// %e 上面价格的指数表示:4.250000e+01
str = String.format("上面价格的指数表示:%e", 50 * 0.85);
System.out.println(str);
// %g 上面价格的指数和浮点数结果的长度较短的是:42.5000
str = String.format("上面价格的指数和浮点数结果的长度较短的是:%g", 50 * 0.85);
System.out.println(str);
// %d% 上面的折扣是:85%
str = String.format("上面的折扣是:%d%%", 85);
System.out.println(str);
// %h 字母A的散列码是:41
str = String.format("字母A的散列码是:%h",'A');
System.out.println(str);
}
常用标识
public static void main(String[] args) {
// + 数字的正负表示:+8 8 -8 -8
String str;
str = String.format("数字的正负表示:%+d %d %+d %d",8,8,-8,-8);
System.out.println(str);
// - 左对齐:8
str = String.format("左对齐:%-6d",8);
System.out.println(str);
// 0 缺位补零:000008
str = String.format("缺位补零:%06d",8);
System.out.println(str);
// 空格 缺位补空格: 8
str = String.format("缺位补空格:% 6d",8);
System.out.println(str);
// 缺位补空格: -8
str = String.format("缺位补空格:% 6d",-8);
System.out.println(str);
// , 数字分组:123,456,789
str = String.format("数字分组:%,d",123456789);
System.out.println(str);
// ( 括号用法:(8888)
str = String.format("括号用法:%(d",-8888);
System.out.println(str);
// 括号用法:8888
str = String.format("括号用法:%(d",8888);
System.out.println(str);
// # #括号用法(十六进制):0xc
str = String.format("#括号用法(十六进制):%#x",12);
System.out.println(str);
// #括号用法(八进制):014
str = String.format("#括号用法(八进制):%#o",12);
System.out.println(str);
// < <括号用法:3.140000 3.1
str = String.format("<括号用法:%f %<3.1f",3.14,3.2);
// "%<3.1f"作用的对象是前一个"%f"所作用的对象
System.out.println(str);
}
public static void main(String[] args) {
String str;
// c 全部日期和时间信息:星期二 六月 20 00:21:33 CST 2023
str = String.format("全部日期和时间信息:%tc",new Date());
System.out.println(str);
// F 年-月-日格式:2023-06-20
str = String.format("年-月-日格式:%tF",new Date());
System.out.println(str);
//D 月/日/年格式:06/20/23
str = String.format("月/日/年格式:%tD",new Date());
System.out.println(str);
//r HH:MM:SS PM格式(12时制):12:21:33 上午
str = String.format("HH:MM:SS PM格式(12时制):%tr",new Date());
System.out.println(str);
//T HH:MM:SS格式(24时制):00:21:33
str = String.format("HH:MM:SS格式(24时制):%tT",new Date());
System.out.println(str);
//R HH:MM格式(24时制):00:21
str = String.format("HH:MM格式(24时制):%tR",new Date());
System.out.println(str);
// %.2f保留两位小数 3.14保留两位小数:3.14
str = String.format("3.14保留两位小数:%.2f",3.141);
System.out.println(str);
}