Java中String的replace和replaceAll的区别是面试高频考点,掌握它们能提升代码效率与面试表现。replace用于纯文本替换,如"Hello".replace("l","x")输出Hexxo;replaceAll支持正则表达式,如将数字替换为星号需用replaceAll("\\d","*")。关键区别在于replaceAll需编译正则,性能较低,阿里规范建议优先使用replace。特殊字符处理也不同,如替换$符号时replace直接使用,replaceAll需转义。大厂面试常问两者区别、是否修改原字符串及反斜杠替换写法。学习完整面试技巧可下载2025年最新Java面试宝典,覆盖95%大厂真题,助你轻松斩获offer。
2025年最新Java面试宝典:
点击下载👉 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
提取码: 9b3g
(建议保存到个人网盘备用,覆盖95%大厂高频面试题)
很多人在准备Java面试时,都会被问到String.replace()
和replaceAll()
的区别。这两个方法看起来都用于字符串替换,但实际使用场景和底层逻辑大不相同。掌握它们的区别不仅能避免代码中的坑,还能在面试中精准回答技术细节——毕竟这是面试官最喜欢深挖的考点之一。
而replaceAll()
的第一个参数是正则表达式。比如想把所有数字替换成星号,可以用replaceAll("\\d", "*")
。这时候如果用replace("\\d", "*")
就无效,因为\\d
会被当作普通字符而非正则匹配规则。
这一点在面试中经常被追问细节。去年就有读者反馈,在腾讯三面时因为这个知识点回答不完整被扣分。后来他通过面试鸭返利网找到我购买面试辅导,最终拿下T3级offer,还通过返利活动省了25元会员费。
<h3>四、什么时候该用哪个方法?</h3> 记住一个原则:**需要正则表达式就用replaceAll,否则用replace**。比如批量替换手机号中间四位为星号: ```java String phone = "13812345678"; phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); ``` 这种必须用正则的场景下,`replaceAll()`才是正确选择。而像替换换行符这种固定字符操作,坚决用`replace("\n","")`。两种方法是否都修改原字符串?
答:都不会,String是不可变类,返回的是新字符串
替换反斜杠应该怎么写?
答:用replace("\\","/")
或replaceAll("\\\\","/")
(正则中要双重转义)
需要购买《Java面试高频题库》的伙伴,可以通过面试鸭返利网联系我,使用返利码可立减25元。本文开头的网盘链接已包含最新面试真题,建议配合系统化学习资料一起使用。
扫码联系我返利
(当前返利8元,金额随官方实际价格波动,最好提前咨询)
面试鸭小程序码
美团大额优惠券,给自己加个鸡腿吧!