StringTokenizer 和 java.util.Scanner Class 有什么区别



我有一个关于StringTokenizer类和java.util.Scanner类的区别的问题?虽然两者都用于分割(标记化)的目的。哪个更好用,效率更高?这两个java类是相互替代还是有不同的用途?

From StringTokenizer javadoc

字符串标记器类允许应用程序中断字符串在令牌…StringTokenizer方法不区分标识符、数字和引号字符串…

From Scanner javadoc

一个简单的文本扫描器,可以解析基本类型和字符串使用正则表达式

扫描仪不像StringTokenizer有nexttint nextBoolean等方法。虽然Scanner在某些情况下很有用,当你需要解析包含数字的用户输入时,StringTokenizer在大多数情况下可以用org.apache.commons.lang.StringUtils.split代替——它不使用正则表达式,而且非常快。

From JavaDoc:

StringTokenizer是为了兼容性而保留的遗留类原因,尽管不鼓励在新代码中使用它。这是推荐的任何寻求此功能的人都可以使用String的split方法或者java.util.regex包。

一个很大的区别是,扫描器可以操作输入流,所以你不需要把它一次都放在内存中(这在某些情况下甚至是不可能的,例如当从控制台连续读取用户输入时)。

最新更新