为什么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只是简单地读取字符序列

————————————————
原文链接:https://blog.csdn.net/linxdcn/article/details/72886231

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值