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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张鑫 黑马帝   /  2011-7-15 16:23  /  3989 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Scanner 和 Reader类在获取键盘输入的数据时有什么区别呢?
以前我用的都是Scanner,个人觉得这个比较方便啊!
用BufferedReader里面有方法有什么好处么?

6 个回复

倒序浏览
黑马网友  发表于 2011-7-15 20:25:41
沙发
BufferedReader有一个缓冲区,速度要比scanner块。
Scanner取得输入的依据是空格,Tab和回车。如果输入的内容里有空格就不合适了。
BufferedReader是以回车键为依据的。各取所需吧,有时候需要用空格的时候还是用Scanner。
貌似就这点区别。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-15 20:37:53
藤椅
Scanner
一个可以使用正则表达式来解析基本类型和字符串的简单文本扫描器。
Scanner 使用分隔符模式将其输入分解为标记,默认情况下该分隔符模式与空白匹配。然后可以使用不同的 next 方法将得到的标记转换为不同类型的值。


Reader
用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率或其他功能。

BufferedReader
Reader的子类
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
Scanner和BufferReader各有优缺点吧,
  用Scanner获取键盘输入:
           Scanner scan = new Scanner(System.in);
         System.out.println("请输入字符串:");
         System.out.println("输入的字符串是:" + scan.next());
   Scanner遇到输入包括空格键,Tab键和Enter键,就会返回下一个输入,当字符串里包含空格,就不能完整输入了。

   用BufferReader获取键盘输入,这是固定的写法,平时要记下:
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
       System.out.print("请输入字符串:");
       String str = bufferedReader.readLine();
       System.out.println("输入的字符串是: " + str);
   用BufferReader能返回用户在按下Enter键之前的所有字符输入,不包括最后按下的Enter返回字符,并且比较快,用它的
readLine()方法能读取一行字符串。
[ 本帖最后由 张小明 于 2011-07-16  00:24 编辑 ]

评分

参与人数 1技术分 +2 收起 理由
admin + 2 总结比较好

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-16 00:29:38
报纸
楼上解释得好形象呀!

那要是读其他类型数据,io方式怎么用啊?
回复 使用道具 举报
黑马网友  发表于 2011-7-17 10:53:50
地板

回复 5 # 的帖子

读取 其他类型 就需要用到包装类了

io包装类 就提供往各种输出流对象中写入各种类型的数据的类,这个类并没有对应到任何具体的流设备的输出流对象,一定要给它传递一个对应具体流设备的输出流对象。

这样的功能的类就是一个包装类,也叫过滤流类或处理流类。

评分

参与人数 1技术分 +2 收起 理由
admin + 2 补充得很好

查看全部评分

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