浅谈BufferedReader中的read()⽅法和readLine()⽅法
浅谈BufferedReader中的read⽅法和readLine⽅法
前⾔:本⼈⽐较菜啦,如果有错误,还请⼤佬指正。
⽅法
查看API⽂档我们可以发现BufferedReader类中的read()⽅法**(⽆参数的)**并不是继承于Read类中的read⽅法。
这是怎么⼀回事呢?
⾸先我们回到Read类中的read⽅法简介去看
这⾥说明了⾼效单字符输⼊的⼦类应该覆盖此⽅法,答案已经显⽽易见了,BufferedRead中的read()⽅法覆盖了原Read中的read()⽅法并
提⾼了效率。
那么这个BufferedReader中的read()⽅法与Read中的read⽅法有什么区别呢?
其实,BufferedReader作为Read的⼀种缓冲区,其实就是为了提⾼效率的,原理其实很简单:
在Read类中的read()⽅法是将硬盘上的字符⼀个个读取出来使⽤,
⽽BufferedReader中的read()⽅法是将缓冲区中的字符⼀个个读出来使⽤,缓冲区是主内存中特地预留出的内存,
从缓冲区⾥⾯取数据的效率⼀般是⽐直接在硬盘上取数据要快的...(缓冲区我就不介绍了,直接上例⼦)
**就好⽐**:
厨房⾥⾯有⼀⼤堆包⼦,之前每次你想吃包⼦总是需要跑到厨房去拿,⽽现在有了⼀个⼤盘⼦(缓冲区),
你就可以现在盘⼦⾥装好包⼦,然后想吃的时候去盘⼦⾥拿⼀个就好了。
简单来说就是⼀句话:
覆盖后的read()⽅法效率更⾼...
ne⽅法
BufferedReader中⽐较有意思的⽅法就是这个readLine⽅法了,这个⽅法是读取⼀⾏字符的,其实原理也很简单。
readLine⽅法其实是使⽤了缓冲区的read⽅法(就是上⾯讲到的read⽅法),将读到的字符进⾏缓冲(缓冲在⼀个临时容器⾥⾯),读到换
⾏符(n或者r,这个主要是考量在不同操作系统上的换⾏符不⼀样)就停⽌(ps:不会把换⾏符读进去的哈),然后将结果以字符串的形
式返回。
本文发布于:2022-12-11 10:43:33,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/85225.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |