【问题标题】:What is the difference in these ways to read in user-input?这些读取用户输入的方式有什么区别?
【发布时间】:2015-02-20 11:36:00
【问题描述】:

我遇到了这个话题How to get basic user input for java,虽然这个特定问题的答案已经足够了,但我想知道为什么有这么多不同的方式来读取用户输入。 尤其是这些不同的用户输入读取方式的优缺点是什么?什么时候使用一种而不是另一种才有意义?

该帖子中提到的可能方法。

  1. 扫描仪类
  2. BufferedReader 和 InputStreamReader 类
  3. DataInputStream 类
  4. 控制台类

【问题讨论】:

标签: java user-input


【解决方案1】:

它们都旨在用于不同的事物。我会尽力解释,但我并没有完全理解这些文档,也没有广泛使用这些文档,所以如果您发现任何错误,请告诉我。

  1. Scanner 类旨在处理来自几乎任何流的输入,并为开发人员提供一种很好、简单的方法来管理它,而无需学习太多类。这是相当基本的,但在大多数情况下,它已经足够了——例如,如果您只想以简单易学的方式获取用户输入,Scanner 就是您想要的。

  2. BufferedReader 类旨在以内存为代价快速读取文件。它旨在包装其他更简单的类,如FileInputStream(技术上,任何extends InputStream的类),并且通过缓冲接下来的几个字节并从该数组而不是直接从流中读取,并且只从流中读取当它到达缓冲区的末尾时。如果您对速度比对低内存使用更感兴趣,那么您会想要这个 - 尽管除非您明确告诉它,否则它实际上不会使用更多内存。

  3. DataInputStream 是更通用的数据输入类。如果您只想从流中读取原语——而不是直接读取单个位并组合相应的类型,这为您提供了一种简单的方法来完成此操作。 This page 是文档所说的获取有关方法实际工作原理的更多信息的地方。

  4. Console 类明确用于 c 指令 line ininterface (CLI) 程序——即,用于从控制台读取数据和将数据写入控制台。就像Scanner——一个简单易学的用于完成基本任务的课程。

一句话,它们用于不同的任务,你使用哪一个应该取决于你想要做什么。

【讨论】:

    【解决方案2】:

    Scanner 是 Java 中最友好的输入阅读器,我喜欢它! BufferedReader 和 InputStreamReader 都用于输入阅读器,也用于归档,例如将可读输入写入文件等。 我不使用另外两个,因为最重要的 IO 类是 Scanner 和 BufferedReader ... 你也可以使用 System.IO 来读取输入,但我更喜欢 Scanner 自己

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2011-07-25
      相关资源
      最近更新 更多