求解!InputStreamReader与Scanner区别!!

TKD03072010 2010-12-02 04:28:14
请问一下:
InputStreamReader isr = new InputStreamReader(System.in);

Scanner sc = new Scanner(System.in);
有什么区别?

用以上这两种 感觉功能上差不多 但是InputStreamReader isr = new InputStreamReader(System.in);
更多麻烦些 每次都要try-catch

我刚自学Java一个月左右 有些东西还不是很懂 望大家能帮忙解释一下 越详细越好

谢谢了哈!!!
...全文
509 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
TKD03072010 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 accptlq 的回复:]

http://blog.sina.com.cn/s/blog_4f9ef4770100fzab.html,这里,讲得很清楚,
Scanner与InputStreamReader,Console 控制台输入的区别
[/Quote]
谢谢哈
accptlq 2010-12-25
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_4f9ef4770100fzab.html,这里,讲得很清楚,
Scanner与InputStreamReader,Console 控制台输入的区别
TKD03072010 2010-12-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 hhkun0120 的回复:]

我写程序的时候,当时老师不推荐用scanner。引用 10 楼 tkd03072010 的回复:

引用 9 楼 hhkun0120 的回复:

InputStreamReader类比scanner效率高,其中的BufferedReader类中对象只生成一次,以后可以重复使用,这就是效率高的原因。

谢谢哈 还有其他区别吗
[/Quote]
我也问其他高手 他们都说两者任何场合基本上都可以用 只不过InputStreamReader效率比较高 呵 是这样吗
hhkun0120 2010-12-03
  • 打赏
  • 举报
回复
我写程序的时候,当时老师不推荐用scanner。[Quote=引用 10 楼 tkd03072010 的回复:]

引用 9 楼 hhkun0120 的回复:

InputStreamReader类比scanner效率高,其中的BufferedReader类中对象只生成一次,以后可以重复使用,这就是效率高的原因。

谢谢哈 还有其他区别吗
[/Quote]
TKD03072010 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hhkun0120 的回复:]

InputStreamReader类比scanner效率高,其中的BufferedReader类中对象只生成一次,以后可以重复使用,这就是效率高的原因。
[/Quote]
谢谢哈 还有其他区别吗
hhkun0120 2010-12-02
  • 打赏
  • 举报
回复
InputStreamReader类比scanner效率高,其中的BufferedReader类中对象只生成一次,以后可以重复使用,这就是效率高的原因。
懒得搭理你 2010-12-02
  • 打赏
  • 举报
回复
Scanner输入时以空格作为分隔符
比如你输入abc cd ef,则你必须用三个来接收
但是你用System.in就不一样了。。。
24K純帥 2010-12-02
  • 打赏
  • 举报
回复
long starttime=System.currentTimeMillis();
Scanner sc=new Scanner(System.in);
long endtime=System.currentTimeMillis();
long t=endtime-startime;
TKD03072010 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 dkzhu 的回复:]

我刚学java时估计和lz差不多,老是感觉c的控制台输入输出简单,而java的太过繁琐。其实以后实际用到java控制台输入输出的场合太少太少,不必太纠结于此。
[/Quote]
呵呵 就是想搞懂它呀
TKD03072010 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bayougeng 的回复:]

Scanner在高版本的jre中才有,在它出现之前,都得用第一种方式来得到标准输入。
Scanner中集成了一些很有用的方法,比如它可以指定忽略,跳过等(其实我也没用过)。
如果已经有了Scanner的话,当然直接用它会方便很多。
[/Quote]
呵呵 还不是很能理解 它们的区别在哪
TKD03072010 2010-12-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunyiz 的回复:]

具体底层的区别也说不清(我也是菜鸟)
不过有一个现象是遇到过了

我做了一个算法
用Scanner对输入数据进行测试的时候耗时2000多ms
然后我换成了InputStreamReader测试同一组数据
耗时直接变成了300多ms

两者读取数据的效率看来差不少
[/Quote]
能把那个代码发给我看看吗 我也试试
DKZhu 2010-12-02
  • 打赏
  • 举报
回复
我刚学java时估计和lz差不多,老是感觉c的控制台输入输出简单,而java的太过繁琐。其实以后实际用到java控制台输入输出的场合太少太少,不必太纠结于此。
sunyiz 2010-12-02
  • 打赏
  • 举报
回复
具体底层的区别也说不清(我也是菜鸟)
不过有一个现象是遇到过了

我做了一个算法
用Scanner对输入数据进行测试的时候耗时2000多ms
然后我换成了InputStreamReader测试同一组数据
耗时直接变成了300多ms

两者读取数据的效率看来差不少
bayougeng 2010-12-02
  • 打赏
  • 举报
回复
Scanner在高版本的jre中才有,在它出现之前,都得用第一种方式来得到标准输入。
Scanner中集成了一些很有用的方法,比如它可以指定忽略,跳过等(其实我也没用过)。
如果已经有了Scanner的话,当然直接用它会方便很多。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧