一尘不染

Java 扫描程序与StringTokenizer与String.Split

java

我刚刚了解了Java的Scanner类,现在我想知道它如何与StringTokenizer和String.Split进行比较/竞争。我知道StringTokenizer和String.Split仅适用于字符串,那么为什么要对字符串使用扫描器?扫描仪是否仅打算一站式进行拆分?


阅读 318

收藏
2020-03-02

共1个答案

一尘不染

他们本质上是课程的马。

  • Scanner设计用于需要解析字符串,提取不同类型数据的情况。它非常灵活,但是可以说它并没有给你提供最简单的API来简单地获取由特定表达式分隔的字符串数组。
  • String.split()Pattern.split()为你提供了执行后者的简单语法,但这实际上就是他们所做的全部。如果你想解析结果字符串,或根据特定标记在中途更改定界符,它们将无济于事。
  • StringTokenizer比更具限制性String.split(),并且使用起来也比较麻烦。它本质上是为提取由固定子字符串分隔的令牌而设计的。由于此限制,速度约为的两倍String.split()。(请参阅与String.split()和的比较StringTokenizer。)它也早于正则表达式API,而正则表达式API是其中String.split()的一部分。
    你会从我的计时中注意到,在典型的机器上,String.split()它仍然可以在几毫秒内标记成千上万个字符串。此外,它的优点还StringTokenizer在于它可以将输出作为字符串数组提供给你,这通常是你想要的。在大多数情况下,使用Enumeration所提供的StringTokenizer,在语法上过于挑剔。从这个角度来看,StringTokenizer如今有点浪费空间,你不妨使用String.split()
2020-03-02