Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

Java 怎样反转字符串?

查看完整题解

参考回答

直接回答

普通需求可以使用 new StringBuilder(text).reverse().toString()。但“反转”要先定义单位:按 UTF-16 代码单元、Unicode 码点,还是人眼看到的字素簇。涉及组合字符、肤色修饰符或复杂表情时,简单反转不一定符合用户期望。

讲清原理

String 本身不可变,所以反转会得到新的字符串值。StringBuilder.reverse 会特别处理有效的代理项对,避免把一个常见补充字符的高低代理项简单倒过来;这比直接把 char[] 逐个倒序更周到。

不过,一个可见字符可能由多个码点构成,例如字母加组合重音,或多个码点组成的表情。保住代理项对,仍不等于保住整个可见字符。面向用户文本的处理,应按字素分段需求选择合适实现与测试样本。

例子与易错点

String text = "A😀B";
String reversed = new StringBuilder(text).reverse().toString();
System.out.println(reversed); // B😀A
System.out.println(text);     // A😀B

这个例子正确,不代表任何自然语言文本都能这样反转。涉及密码、协议或标识符时,还要先确认业务真的需要反转,而不是只为演示算法。

相关题:第 20 题、第 31 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。