从用户获取输入的两种方式有什么区别?
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num=Integer.parseInt(br.readLine());
和
Scanner sc = new Scanner(System.in);
int num=sc.nextInt();
在这里假定包装io和util是相应导入的。
这些只是两个完全不同的动物。从流读取时,您正在阅读简单的数量...字符,字节,行。然后,如您所示,您必须添加其他代码以以某种更高级别的方式解释这些数量。
根据扫描仪的文档:
一个简单的文本扫描仪,可以解析原始类型和字符串 使用正则表达式。
因此,扫描仪在流的顶部添加了另一个功能。它解析了输入。它将传入数据分开,并试图以各种方式来解释它,这些方式比仅仅是字节或线更复杂。扫描仪为您提供了很多功能,如果您使用了一个简单的流,则必须写自己。
要更明确地回答您的特定问题...提出的两个代码块是否会给您带来所需的结果?如果是这样,并且如果您不愿继续阅读流中的其他任何内容,那么使用扫描仪也许是过分的。如果您要继续从流中读取整数,那么最好使用原始流。但是,如果您接下来要阅读文本或浮点值或其他任何内容,那么扫描仪可能是您想要的。扫描仪具有处理新线的智能。您必须用基本流来自己做。
bufferedreader是
- 年龄较大
- 大(8 kb)
- 同步(使其慢)
- 只读字符串。
扫描仪是
- 新
- 小缓冲区(1 kb)
- 不同步
- 可以解析用户输入并读取int,简称,字节,float,long and double fack acting。
请注意,扫描仪在使用正则速度时很慢,这使得bufferedReader更快地阅读字符串。