这些用户输入读取方式有何不同?

时间:2014-12-22 11:10:19

标签: java user-input

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

这些帖子中提到的可能方式。

  
      
  1. 扫描仪课程
  2.   
  3. BufferedReader和InputStreamReader类
  4.   
  5. DataInputStream类
  6.   
  7. 控制台类
  8.   

2 个答案:

答案 0 :(得分:3)

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

  1. Scanner类用于处理几乎任何流的输入,并为开发人员提供了一种简单易用的方法来管理它,而无需学习太多类。这是相当基本的,但大部分时间,它足够 - 例如,如果你只是想以简单易学的方式获得用户输入,Scanner就是你想要的。

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

  3. DataInputStream是一种更通用的数据输入类。如果您只想从流中读取基元 - 而不是直接读取各个位并组成相应的类型,这为您提供了一种简单的方法。 This page是文档所说的,可以获取有关方法实际工作方式的更多信息。

  4. Console类明确用于 c ommand l ine i 接口(CLI)程序 - 也就是说,用于从控制台读取数据和向控制台写入数据。这就像Scanner - 一个简单易学的课程,可以完成基本任务。

  5. 在一个句子中,它们用于不同的任务,你使用哪一个应该由你想要做的事情决定。

答案 1 :(得分:0)

Scanner是Java中最友好的输入阅读器,我喜欢它! BufferedReader和InputStreamReader都用于输入Reader和Worked也有文件,有些东西比如写文件的可读输入等等。 我不使用其他两个,因为最重要的IO类是Scanner和BufferedReader ... 您也可以使用System.IO读取输入,但我更喜欢自己的扫描仪