A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sunnysun 中级黑马   /  2016-3-6 17:20  /  691 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      关于Scanner和BufferReader的区别,网上说的无外乎下面几点区别:
      ★首先,BufferedReader对象只将回车看作输入结束,得到的字符串;Scanner对象把回车,空格,tab键都看作输入结束,直接用sc.next()得到的是字符串形式。关于这一点,Scanner不是也可以用sc.nextLine()来实现么?
      ★其次,Scanner是一个可以使用正则表达式来分析基本类型和字符串的简单文本扫描器。Scanner类中提供如下等多个方法:      
            ▲next():取得一个字符串;
            nextLine():取得一行字符串;
            nextInt():将取得的字符串转换成int类型的整数;      
            nextFloat():将取得的字符串转换成float型;
            nextBoolean():将取得的字符串转换成boolean型;
       BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。速度要比Scanner快。
      ★另外,Scanner类位于java.util包中,要引入import java.util.Scanner,但是在Java SE 1.4及以前的版本中,尚没有提供Scanner方法。
        BufferedReader类位于java.io包中,要引入java.io这个包,并且使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).

      综上,看起来一般情况下用哪个都可以,不过究竟什么情况下应该用BufferReader什么情况下应该用Scanner呢?求解答。。。

3 个回复

倒序浏览
嗯,读键盘输入的数据,一般来说我们都用new Scanner(System.in); 而读文本文件,我们才会用到BufferReader。当然,作为练习,你喜欢用那种键盘输入语句都可以,因为实际开发不会用到键盘输入语句的。
回复 使用道具 举报
玉质彼端 发表于 2016-3-7 02:08
嗯,读键盘输入的数据,一般来说我们都用new Scanner(System.in); 而读文本文件,我们才会用到BufferReader ...

嗯,实际做项目时候总是忽略一些基础问题= =
回复 使用道具 举报
Scanner类属于util包,是java提供的封装方法,其中的next()是阻塞方法,会等待读取,以标记符作为读取节点
BufferReader是字符读取的缓冲机制,在大量数据读取时更具优势,属于IO流操作范畴,具体实现功能时应该都会用IO流操作。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马