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