Java 为什么BufferedReader比Scanner速度快?

为什么BufferedReader比Scanner速度快?
出处:http://blog.csdn.net/linxdcn/article/details/72886231

碰巧做一道算法题的时候碰到关于Scanner和BufferedReader区别的题。

图中运行时间长的采用的是Scanner输入,占用内存也更大

接下来我们分析一下为什么Scanner比BufferReader慢很多。

(1)BufferedReader

BufferedReader的构造函数需要传入一个Reader,对于InputStream或者File,可以通过InputStreamReader和FileReader进行包装后传入,代码如下:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
BufferedReader br = new BufferedReader(new FileReader(“foo.in”));
(2)Reader和Scanner总结

Java.util.Scanner类是一个简单的文本扫描类,它可以解析基本数据类型和字符串。它本质上是使用正则表达式去读取不同的数据类型
Java.io.BufferedReader类为了能够高效的读取字符序列,从字符输入流和字符缓冲区读取文本
(3)readLine和nextLine函数

不管是Reader还是Scanner,如果之前调用read()或者nextXxx()读取过字符,再调用readLine()或者nextLine(0函数,都是读取本行剩余部分。
(4)Reader和Scanner比较

BufferedReader是支持同步的,而Scanner不支持。BufferedReader的read函数都加了synchronized关键字

BufferedReader的缓冲区大小为8KB,Scanner的缓冲区大小为1KB

BufferedReader相对于Scanner来说要快一点,因为Scanner对输入数据进行正则解析,而BufferedReader只是简单地读取字符序列

全部评论

相关推荐

黑皮白袜臭脚体育生:春节刚过就开卷吗?哈基馆,你这家伙......
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务