Java 11 的 String.repeat(int count) 方法可简洁生成重复字符串,如 "=".repeat(50) 创建50个等号的分割线;支持动态适配终端宽度、多字符模式及手动截断,比 Java 8 的 Collections.nCopies 更直观高效。

Java 11 引入了 String.repeat(int count) 方法,可以非常简洁地生成重复字符串,比如控制台分割线(如 "—"、"=" 或 "*")。
用 repeat() 生成固定长度的分割线
假设你想在控制台打印一条长度为 50 的等号分割线:
String line = "=".repeat(50);
这会直接生成一个包含 50 个 = 的字符串。无需循环或 StringBuilder,一行搞定。
结合终端宽度动态生成(更实用)
硬写数字不够灵活。可以结合 System.console().getWidth()(注意:仅在真实终端中有效,IDE 可能返回 null):
立即学习“Java免费学习笔记(深入)”;
- 安全获取终端宽度(带 fallback):
int width = Optional.ofNullable(System.console())
.map(Console::getWidth)
.orElse(80); // 默认 80 列
String separator = "─".repeat(width);
这样生成的分割线能适配大多数终端窗口宽度。
支持多字符分隔符(如 "─┬─" 风格)
repeat() 对任意字符串都有效。例如生成带连接符的分隔线:
-
"─┬─".repeat(10)→"─┬──┬──┬──┬──┬──┬──┬──┬──┬─"(共 30 字符) - 若需恰好填满 60 字符,可先算重复次数:
"─┬─".repeat(60 / 3)(整除前提下)
注意:如果目标长度不能被子串长度整除,repeat() 不会自动截断 —— 你需要手动处理,例如:
String pattern = "─┬─"; int targetLen = 60; String full = pattern.repeat(targetLen / pattern.length()); String line = full.substring(0, targetLen); // 截取前 60 位
兼容旧版 Java 的替代写法(仅作参考)
如果项目仍用 Java 8,可用 Collections.nCopies() 拼接:
String line = String.join("", Collections.nCopies(50, "="));
但不如 repeat() 直观高效,建议升级后优先使用原生方法。


















