java 15起string新增实例方法formatted(object... args),等价于string.format(this, args),需在字符串实例上调用,不支持静态调用,兼容性限于java 15+。

Java 中并没有名为 String.formatted 的静态方法,但自 Java 15 起(JEP 378),String 类新增了一个实例方法 formatted(Object... args),它是 String.format(this, args) 的便捷替代写法。
formatted 是实例方法,不是静态方法
它必须在已有字符串上调用,不能像 String.format() 那样直接通过类名调用:
- ✅ 正确:
"Hello %s".formatted("World")→"Hello World" - ❌ 错误:
String.formatted("Hello %s", "World")(编译不通过)
底层逻辑完全等价于 String.format
str.formatted(args) 内部就是调用 String.format(str, args),行为、格式语法(如 %d、%02d、%s)、异常抛出(如 IllegalFormatException)都一致。例如:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
"%d + %d = %d".formatted(2, 3, 5)→"2 + 3 = 5" -
"Name: %-10s | Age: %d".formatted("Alice", 30)→"Name: Alice | Age: 30"
适用场景与使用建议
适合链式调用或模板字符串已明确的场合,代码更直观简洁:
- 替代
String.format("Result: %s", value)→"Result: %s".formatted(value) - 配合文本块(Text Blocks)更清晰:
"""
Name: %s
ID: %d
""".formatted(name, id) - 注意:若格式串来自变量或用户输入,仍推荐用
String.format()(语义更显式,IDE 更易检查)
兼容性注意
formatted() 是 Java 15+ 新增 API,低版本(如 Java 8/11)不可用。若需兼容旧版,不能直接替换,应继续使用 String.format() 或封装适配工具方法。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










