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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杜加璇 中级黑马   /  2013-4-2 22:25  /  1731 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杜加璇 于 2013-4-3 11:50 编辑

Scanner 和BufferedRead 这俩个类完全一样吗,还是有什么区别呢

7 个回复

倒序浏览
这两个类没有什么大的关联吧。Scanner使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。BufferedReader是一个字符流,从字符输入流中读取大量(其readLine方法是一次读取一行)文本,放到缓冲区,不用每次都到文件中去访问,从而实现字符、数组和行的高效读取。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
不一样。
以下是我所知道的区别,供参考:
1.bufferedReader带缓冲区,而Scanner没有;
2.Scanner可以使用正则表达式匹配键盘输入,从键盘获取的默认分隔符为空格,
   。bufferedReader则不可以;

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
不一样。
以下是我所知道的区别,供参考:
1.bufferedReader带缓冲区,而Scanner没有;
2.Scanner可以使用正则表达式匹配键盘输入,从键盘获取的默认分隔符为空格,
   。bufferedReader则不可以;
回复 使用道具 举报
bufferedReader是字符输入流,不能读入基本类型值,,Scanner是一个用正则表达式,可以读入基本类型值
BufferedReader所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
不一样的,BufferedReader是字符输入流,(不能读入基本类型值)Scanner是一个用正则表达式处理过的留,可以读入基本类型值
使用Scanner来取得使用者的输入很方便,但是它以空白来区隔每一个输入字串,在某些时候并不适用,因为使用者可能输入一个字串,中间会包括空白字元,而您希望取得完整的字串。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
Scanner一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。
BufferedRead是读取字符的一个缓冲流。
两者没有多大关系。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
这两个类其实区别就是
当需要从键盘输入的时候。
  1.                 //Scanner scan = new Scanner(System.in);
  2.                 //System.out.println(scan.nextLine());
  3.                 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  4.                 System.out.println(br.readLine());
复制代码
Scanner适合初学者使用,因为内部封装的Inputstream对象,自己将字节流处理成字符流,甚至处理成基本类型的功能等。

BufferedRead是处理字符流的缓冲类,因为键盘流是字节流需要使用转换流。其实说简单就是
自己去看看毕老师的
黑马程序员_毕向东_Java基础视频教程第18天-19天-20天-21天-IO的io视频
你就可以直接去读Scanner源码了,问题就理解更加透彻了。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马