StringTokenizer和java.util.Scanner类之间有什么区别

时间:2011-10-26 06:18:58

标签: java

我对StringTokenizer班级和java.util.Scanner班级之间的差异有疑问?虽然两者都用于解剖(标记化)目的。哪一个更好用,效率更高?这两个java类是彼此的替代品还是有不同的目的?

4 个答案:

答案 0 :(得分:2)

来自StringTokenizer javadoc

  

字符串tokenizer类允许应用程序断开字符串   into token .... StringTokenizer方法不区分   标识符,数字和带引号的字符串......

来自Scanner javadoc

  

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

因此,与StringTokenizer不同,Scanner具有nextInt,nextBoolean等方法。 虽然在某些情况下,当您需要解析用户输入包含数时,Scanner很有用,但在大多数情况下,StringTokenizer可以替换为org.apache.commons.lang.StringUtils.split - 它不使用正则表达式并且非常快。 / p>

答案 1 :(得分:1)

来自JavaDoc

  

StringTokenizer 是为保持兼容性而保留的旧类   原因虽然在新代码中不鼓励使用它。建议   任何寻求此功能的人都使用String的split方法   或改为java.util.regex包。

答案 2 :(得分:1)

一个很大的区别是扫描仪可以对输入流进行操作,因此您不需要同时将其存储在内存中(在某些情况下甚至不可能,例如从控制台连续读取用户输入时)

答案 3 :(得分:1)

Scanner专为需要解析字符串,提取不同类型数据的情况而设计。如果您从程序外部的源(例如文件或用户)解析文本数据,那么就是扫描仪派上用场。

StringTokenizer总是在那里。它是最快的,但类似枚举的习语可能看起来不像其他的那样优雅。

分裂在JDK 1.4上出现。比tokenizer慢但更容易使用,因为它可以从String类调用。