黑马程序员技术交流社区

标题: Scanner和BufferedReader区别 [打印本页]

作者: a6217815    时间: 2014-6-11 23:07
标题: Scanner和BufferedReader区别
本帖最后由 a6217815 于 2014-6-13 10:18 编辑

我知道的,大概就是Scanner在java.util包里面,可以将回车,空格,tab键都看作输入结束
而BufferedReader在io包里面,并且它需要处理IO异常,而且只能以回车结束
除此之外,这二者还有什么不同的点吗?
为什么我看到BufferedReader用的频率比Scanner要高好多,明明Scanner不需要处理IO异常,用起来也简单一些
作者: axuan    时间: 2014-6-11 23:10
BufferedReader是字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取!速度要比Scanner快!而且也可以设置缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
在创建Scanner类的对象时,需要用System.in作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理.
Scanner类中提供了多个方法:
      next():取得一个字符串;
      nextInt():将取得的字符串转换成int类型的整数;
      nextFloat():将取得的字符串转换成float型;
      nextBoolean():将取得的字符串转换成boolean型
作者: wssjdysf    时间: 2014-6-11 23:23
BufferedReader带临时缓冲区的,用得多,因为他效率高速度快,现在都讲究效率吧
作者: a6217815    时间: 2014-6-11 23:50
wssjdysf 发表于 2014-6-11 23:23
BufferedReader带临时缓冲区的,用得多,因为他效率高速度快,现在都讲究效率吧 ...

所以现在Scanner 没什么人用了吗?
作者: tanshion    时间: 2014-6-12 00:09
Scanner是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器!也就是控制台应用程序最为常用的文本输入方式!

BufferedReader是字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取!速度要比Scanner快!而且也可以设置缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
Scanner取得输入数据的依据是空格符:如按下空格键,Tab键或者Enter键,Scanner就会返回下一个输入。所以说Scanner不能输入空格,如果你希望取得含有空格的字符串BufferedReader可以做到。
作者: a6217815    时间: 2014-6-13 10:18
tanshion 发表于 2014-6-12 00:09
Scanner是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器!也就是控制台应用程序最为常用 ...

谢谢,知道区别了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2