record对象拼成字符串 1.+号拼接 2.Stringformat格式化输出
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。
format()方法有两种重载形式:

  1. public static String format(String format, Object... args) {
  2. return new Formatter().format(format, args).toString();
  3. }
  4. public static String format(Locale l, String format, Object... args) {
  5. return new Formatter(l).format(format, args).toString();
  6. }

在这个方法中我们可以定义字符串模板,然后使用类似填空的方式将模板格式化成我们想要的结果字符串:

  1. String java = String.format("hello %s", "world");

得到的结果就是hello world,我们可以把第一个参数当做模板, %s当做填空题,后边的可变参数当做答案

2、常用的转换符

当然不同数据类型需要不同转换符完成字符串的转换,以下是不同类型的转化符列表:

转换符 详细说明 示例
%s 字符串类型 “喜欢请收藏”
%c 字符类型 ‘m’
%b 布尔类型 true
%d 整数类型(十进制) 88
%x 整数类型(十六进制) FF
%o 整数类型(八进制) 77
%f 浮点类型 8.888
%a 十六进制浮点类型 FF.35AE
%e 指数类型 9.38e+5
%n 换行符
%tx 日期与时间类型(x代表不同的日期与时间转换符) 后边详细说
  1. System.out.printf("过年了,%s今年%d岁了,今天收了%f元的压岁钱!",
  2. "小明",5,88.88);
  3. 结果:
  4. 过年了,小明今年5岁了,今天收了88.880000元的压岁钱!

3、特殊符号

接下来我们看几个特殊字符的常用搭配,可以实现一些高级功能:

标志 说明 示例 结果
+ 为正数或者负数添加符号,因为一般整数不会主动加符号 (“%+d”,15) +15
0 数字前面补0,用于对齐 (“%04d”, 99) 0099
空格 在整数之前添加指定数量的空格 (“%4d”, 99) 99
, 以“,”对数字分组(常用显示金额) (“%,f”, 9999.99) 9,999.990000
( 使用括号包含负数 (“%(f”, -99.99) (99.990000)
  1. System.out.printf("过年了,%s今年%03d岁了,今天收了%,f元的压岁钱!",
  2. "小明",5,8888.88);
  3. 结果
  4. 过年了,小明今年005岁了,今天收了8,888.880000元的压岁钱!

默认情况下,我们的可变参数是安装顺序依次替换,但是我想重复利用可变参数那该怎么处理呢?
我们可以采用 在转换符中加数字$完成匹配:

  1. System.out.printf("%1$s %1$s %1$s","小明");
  2. 控制台显示内容: 小明 小明 小明

其中1$就代表第一个参数,那么2$就代表第二个参数了

4、日期处理

第一个例子中有说到 %tx x代表日期转换符 我也顺便列举下日期转换符

标志 说明 示例
c 包括全部日期和时间信息 周四 10月 21 14:52:10 GMT+08:00 2021
F “年-月-日”格式 2021-10-21
D “月/日/年”格式 10/21/21
r “HH:MM:SS PM”格式(12时制) 02:53:20 下午
T “HH:MM:SS”格式(24时制) 14:53:39
R “HH:MM”格式(24时制) 14:53
b 月份本地化 10月
y 两位的年 21
Y 四位的年 2021
m 10
d 21
H 24小时制的时 14
l 12小时制的时 2
M 57
S 46
s 秒为单位的时间戳 1634799527
p 上午还是下午 下午

我们可以使用以下三个类去进行格式化,其中可能存在不支持的情况,比如LocalDateTime不支持c:

  1. System.out.printf("%tc",new Date());
  2. System.out.printf("%tc",ZonedDateTime.now());
  3. System.out.printf("%tF",LocalDateTime.now());

此时我们使用debug查看,默认情况下的fomat,我们不妨来读一读:FileSharing.jpg

  1. 10 21, 2021 2:23:42 下午 com.itszt.entity.LoggerTest testLogParent
  2. 警告: warning

image.png