Java中用StringBuilder反转字符串最直接高效,核心是new StringBuilder(str).reverse().toString();需先校验null和空串,StringBuilder非线程安全但性能优于StringBuffer,原字符串不受影响,部分反转需分段处理。

Java中用StringBuilder反转字符串最直接高效,核心就一句:new StringBuilder(str).reverse().toString()。它底层基于字符数组操作,比手动循环或栈更简洁且性能好。
为什么选StringBuilder而不是StringBuffer?
两者都有reverse()方法,但StringBuilder是非线程安全的,速度更快;除非在多线程环境中明确需要同步,否则默认用StringBuilder更合理。日常开发中绝大多数场景都不需要线程安全的开销。
一行代码搞定反转,但要注意null和空串
直接调用reverse()前,必须校验输入。否则传入null会抛NullPointerException,空字符串虽然能正常处理,但提前判断可让逻辑更清晰。
- 先判null:if (str == null) return null;
- 再判空串:if (str.isEmpty()) return str;
- 之后再执行 new StringBuilder(str).reverse().toString()
反转后想保留原字符串?无需额外复制
StringBuilder.reverse()是原地修改,但你用的是新创建的StringBuilder实例(new StringBuilder(str)),所以原始字符串str完全不受影响。String本身不可变,这点天然保证了安全性。
立即学习“Java免费学习笔记(深入)”;
想反转部分子串?拆解+拼接更灵活
比如只反转字符串中某一段(如索引2到5),不能直接用reverse()全量处理。可以分三段:前缀 + 反转的子串 + 后缀。
- 用substring(0, start)取前缀
- 用new StringBuilder(str.substring(start, end)).reverse().toString()反转目标段
- 用substring(end)取后缀,最后用+拼接
不复杂但容易忽略细节,写对一次,后续复用就很稳。


















