本文目录导读:

Java的格式化API在Java 21中有了重大更新,以下是主要的新增内容:
StringTemplate (Java 21 预览特性)
这是最重大的新增,提供了一种全新的字符串格式化方式:
// 使用 STR 模板处理器
String name = "Alice";
int age = 30;
String message = STR."\{name} is \{age} years old";
// 输出: "Alice is 30 years old"
// 支持表达式
int x = 10, y = 20;
String result = STR."\{x} + \{y} = \{x + y}";
// 输出: "10 + 20 = 30"
// 支持方法调用
String upper = STR."Hello \{name.toUpperCase()}";
// 输出: "Hello ALICE"
自定义模板处理器
可以创建自己的模板处理器:
// 创建 JSON 模板处理器
StringTemplate.Processor<JSONException, RuntimeException> JSON =
StringTemplate.Processor.of(
st -> new JSONObject(st.interpolate())
);
// 使用自定义处理器
String name = "Bob";
JSONObject json = JSON."""
{
"name": "\{name}",
"age": 25
}
""";
FMT 模板处理器
结合了 String.format() 的功能:
double price = 19.99;
int quantity = 3;
String invoice = FMT."""
Item: %-10s\{item}
Price: $%.2f\{price}
Quantity: %d\{quantity}
Total: $%.2f\{price * quantity}
""";
RAW 模板处理器
获取原始模板而不进行插值:
var st = RAW."Hello \{name}";
// 返回 StringTemplate 对象,而不是插值后的字符串
改进的 DateTimeFormatter
Java 21 增加了新的日期时间格式化选项:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("B")
.withLocale(Locale.ENGLISH);
// B 表示"day period" (上午/下午/晚上等)
NumberFormat 增强
// 紧凑数字格式
NumberFormat fmt = NumberFormat.getCompactNumberInstance(
Locale.US, NumberFormat.Style.SHORT);
fmt.format(1200); // "1.2K"
fmt.format(1000000); // "1M"
注意:
StringTemplate在 Java 21 中是预览特性,需要使用--enable-preview启用- 后续版本(Java 22+)可能会有所调整或正式发布
这些新特性极大地提升了 Java 字符串处理的灵活性和可读性。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播