本文目录导读:

- Java 11 新增(目前最常用、最具代表性的)
- Java 12 新增
- Java 13 新增
- Java 15 正式版(Text Blocks 稳定)
- Java 17 / 18 / 20+ 新增(较少但有用)
- 实际开发中最高频使用的几个
在 Java 8 之后,尤其是 Java 11 和 Java 12+ 版本中,String 类增加了许多非常实用且高频的新方法,以下按版本分类列出主要的新方法及简要说明:
Java 11 新增(目前最常用、最具代表性的)
这些方法主要用于简化字符串处理,特别是 判空、重复、行处理 等场景。
| 方法 | 说明 |
|---|---|
isBlank() |
判断字符串是否为 空白(空字符串或仅含空白字符,如空格、Tab、换行等) |
lines() |
返回一个 Stream<String>,按 换行符(\n、\r、\r\n)分割字符串 |
strip() |
去除字符串 首尾 的 全角/半角空格、制表符等(比 trim() 更强,支持 Unicode) |
stripLeading() |
仅去除 开头 的空白 |
stripTrailing() |
仅去除 的空白 |
repeat(int count) |
返回一个重复 count 次的新字符串(count=0 返回空字符串) |
示例:
String s = " Hello \n World ";
System.out.println(s.isBlank()); // false
System.out.println(" ".isBlank()); // true
System.out.println(s.strip()); // "Hello \n World"(保留中间空白)
System.out.println("*".repeat(5)); // "*****"
s.lines().forEach(System.out::println); // 按行输出
Java 12 新增
| 方法 | 说明 |
|---|---|
indent(int n) |
对字符串的 每一行 添加/移除缩进(正数增加,负数减少) |
transform(Function<? super String, ? extends R> f) |
对字符串应用一个函数并返回结果(链式处理,类似 map) |
示例:
String s = "Hello\nWorld"; System.out.println(s.indent(4)); // 每行前加4个空格 String result = "hello".transform(str -> str.toUpperCase() + "!"); System.out.println(result); // "HELLO!"
Java 13 新增
主要用于 文本块(Text Blocks)的预览特性(正式版在 Java 15),但对字符串方法本身没有新增。
Java 15 正式版(Text Blocks 稳定)
虽然 Text Blocks()是语言特性,但通常与 stripIndent()、translateEscapes() 等方法配合使用:
| 方法 | 说明 |
|---|---|
stripIndent() |
去除文本块中 每行共有的前导空白(常用于格式化多行字符串) |
translateEscapes() |
将字符串中的转义序列(如 \n)转换为实际字符(类似 C 语言中的转义处理) |
formatted(Object... args) |
等价于 String.format(this, args),方便在文本块内使用占位符 |
示例:
String json = """
{
"name": "%s",
"age": %d
}
""".formatted("Alice", 30).stripIndent();
System.out.println(json);
Java 17 / 18 / 20+ 新增(较少但有用)
没有大量新增实例方法,主要是一些细节优化和内部性能提升,实际开发中重点关注 Java 11 和 15 的方法即可。
实际开发中最高频使用的几个
isBlank()—— 替代s == null || s.trim().isEmpty()的代码strip()/stripLeading()/stripTrailing()—— 比trim()更安全(支持 Unicode 空白)repeat(n)—— 快速生成重复字符串,不用循环lines()—— 按行处理多行文本(如日志解析)indent(n)—— 快速调整多行文本缩进
如果你的 JDK 版本低于 11,建议升级,因为这些方法能极大简化日常字符串操作。
版权声明:足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
足球直播
足球直播
足球直播
足球直播
足球直播
中超直播
中超直播
中超直播
中超直播
中超直播
英超直播
英超直播
英超直播
英超直播
英超直播
德甲直播
德甲直播
德甲直播
德甲直播
德甲直播
西甲直播
西甲直播
西甲直播
西甲直播
西甲直播
意甲直播
意甲直播
意甲直播
意甲直播
意甲直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播