【发布时间】:2020-03-02 04:37:25
【问题描述】:
在我的理解中,StringTokenizer 将字符串划分为标记,这些标记在打印时会根据分隔符产生与拆分函数相同的结果。例如,考虑以下代码:
String str="This is a text.";
StringTokenizer st=new StringTokenizer(str);
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());
}
还有这个:
String str="This is a text.";
String st[]=str.split(" ");
for(int i=0;i<st.length;i++) {
System.out.println(st[i]);
}
在这两种情况下,输出都是:
This
is
a
text.
既然可以用 split 功能实现同样的功能,为什么还要使用 StringTokenizer?
【问题讨论】:
-
简单。你不应该使用
StringTokenizer。它的 Javadoc 声称它已经过时了。 -
StringTokenizer的一个优点是它会返回它拆分的字符。String.split()没有,它只是吃定界符。 -
@Dawood 我在Java SE 8 docs 中找不到“过时的”。
-
@TestCase 文档说:“StringTokenizer 是一个遗留类,出于兼容性原因保留,尽管在新代码中不鼓励使用它。建议任何寻求此功能的人使用 split 方法使用 String 或 java.util.regex 包来代替”。这意味着该类已过时,即使没有明确使用“过时”一词。