0

0

详解Java中的String.repeat()_Java 11新增的字符串快速重复语法

P粉602998670

P粉602998670

发布时间:2026-02-17 10:38:33

|

954人浏览过

|

来源于php中文网

原创

string.repeat()是java 11+新增的字符串重复方法,调用str.repeat(n)返回重复n次的新字符串,要求n≥0且str非null,底层基于数组复制优化,性能优于手动循环,但需注意不可见字符重复后的显示问题及jdk版本兼容性。

详解java中的string.repeat()_java 11新增的字符串快速重复语法

String.repeat() 在 Java 11+ 中怎么用

它就是个极简的字符串重复工具,str.repeat(n) 直接返回重复 n 次的新字符串,不用手写循环或 StringBuilder。前提是 JDK 版本 ≥ 11,低于这个版本会编译报错:Cannot resolve method 'repeat(int)'

  • n 必须 ≥ 0,传负数直接抛 IllegalArgumentException
  • 传 0 返回空字符串 "",不是 null
  • 原字符串为 null 时,调用会触发 NullPointerException(方法本身不处理空值)
  • 内部用的是数组复制,对超长重复(比如 "a".repeat(1_000_000))可能触发堆内存压力,但日常拼接几十次完全无感

为什么不用 StringBuilder.append() 循环拼接

手动循环在语义和可读性上明显更重。尤其当逻辑里只差一次重复动作时,硬套 StringBuilder 反而模糊意图。

  • String.repeat() 是声明式写法,一眼看出“我要这个串重复 N 次”
  • 等价于 new String(new char[n]).replace('\0', c) 的优化实现,JVM 层做了内联和数组填充优化,实测比手写循环快 10%~30%
  • 不引入额外变量、不污染作用域,适合链式调用,比如 jsonKey.repeat(2).trim()

常见踩坑:空格、换行、不可见字符重复后变样

看起来只是重复字符串,但遇到含制表符、回车、零宽空格等字符时,输出可能和预期不符——因为它们被真实复制了,而 IDE 或日志器未必能清晰显示。

AI at Meta
AI at Meta

Facebook 旗下的AI研究平台

下载
  • 比如 " \t\n".repeat(2) 实际生成 " \t\n \t\n",肉眼难分辨中间有几个空格或换行
  • 调试时建议配合 String::charsString::codePoints 查看实际码点:"\t".repeat(2).chars().forEach(System.out::println)
  • 若用于生成缩进或分隔线,推荐明确使用可见字符,如 "-".repeat(20),避免用 " ".repeat(n) 做对齐(不同字体下空格宽度不一致)

和 Python 的 * 运算符对比有啥区别

Java 的 repeat() 和 Python 的 "abc" * 3 表面相似,但底层约束不同。

立即学习Java免费学习笔记(深入)”;

  • Python 允许右操作数是浮点数(自动截断)或布尔值(True → 1, False → 0),Java 的 repeat(int) 参数类型严格限定为 int,连 long 都要显式强转
  • Python 对负数返回空字符串,Java 抛异常,行为更保守
  • Java 不支持 repeat() 用于 null 字符串,Python 的 None * 3TypeError,但错误信息不如 Java 明确(Java 提示“negative repetition count”)

重复次数大、字符串含不可见字符、跨 JDK 版本迁移时最容易出问题,这些地方多看一眼输出长度和实际字符编码,比事后 debug 省力得多。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

750

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

244

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

746

2024.03.01

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1553

2023.10.24

Go语言中的运算符有哪些
Go语言中的运算符有哪些

Go语言中的运算符有:1、加法运算符;2、减法运算符;3、乘法运算符;4、除法运算符;5、取余运算符;6、比较运算符;7、位运算符;8、按位与运算符;9、按位或运算符;10、按位异或运算符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

237

2024.02.23

php三元运算符用法
php三元运算符用法

本专题整合了php三元运算符相关教程,阅读专题下面的文章了解更多详细内容。

127

2025.10.17

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

199

2023.11.20

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

182

2025.12.04

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

283

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 3.6万人学习

C# 教程
C# 教程

共94课时 | 9.6万人学习

Java 教程
Java 教程

共578课时 | 67.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号