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

String 和 StringTokenizer 有什么区别?

查看完整题解

参考回答

直接回答

String 表示不可变的字符串值;StringTokenizer 是按分隔符逐个取词的旧式工具。前者是数据本身,后者是处理字符串的工具,二者不是替代关系。新代码通常优先考虑 String.split、Scanner 或按实际数据格式选择解析器。

讲清原理

StringTokenizer 的默认分隔符包括空格、制表符和换行等字符。传入的分隔符字符串通常表示“一组分隔字符”,而不是一个整体匹配的子串;连续分隔符也不会按普通空字段那样全部保留。

String.split 接收的是正则表达式,并且 limit 参数会影响尾部空字段的保留。选择哪种工具时,要看是否需要空字段、转义、引号等语义。CSV 等格式不能仅凭简单分隔就保证正确解析。

例子与易错点

var tokens = new java.util.StringTokenizer("A,,B", ",");
while (tokens.hasMoreTokens()) {
    System.out.println(tokens.nextToken());
} // 分别打印 A、B
System.out.println(java.util.Arrays.toString("A,,B".split(",")));
// [A, , B]

这里中间空字段的表现不同。旧代码用 StringTokenizer 并不一定错误,但要先核对它是否符合输入格式。

相关题:第 48 题、第 51 题。

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

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