日期:2014-05-20  浏览次数:20761 次

求解!InputStreamReader与Scanner区别!!
请问一下:
InputStreamReader isr = new InputStreamReader(System.in);

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

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

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

谢谢了哈!!!

------解决方案--------------------
Scanner在高版本的jre中才有,在它出现之前,都得用第一种方式来得到标准输入。
Scanner中集成了一些很有用的方法,比如它可以指定忽略,跳过等(其实我也没用过)。
如果已经有了Scanner的话,当然直接用它会方便很多。
------解决方案--------------------
具体底层的区别也说不清(我也是菜鸟)
不过有一个现象是遇到过了

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

两者读取数据的效率看来差不少
------解决方案--------------------
我刚学java时估计和lz差不多,老是感觉c的控制台输入输出简单,而java的太过繁琐。其实以后实际用到java控制台输入输出的场合太少太少,不必太纠结于此。
------解决方案--------------------
InputStreamReader类比scanner效率高,其中的BufferedReader类中对象只生成一次,以后可以重复使用,这就是效率高的原因。