BufferedReader中read()方法和readLine()方法的使用
read方法
查看API文档我们可以发现BufferedReader类中的read()方法**(无参数的)**并不是继承于Read类中的read方法。
这是怎么一回事呢?
首先我们回到Read类中的read方法简介去看
这里说明了高效单字符输入的子类应该覆盖此方法
答案已经显而易见了
BufferedRead中的read()方法覆盖了原Read中的read()方法并提高了效率
BufferedReader中的read()方法与Read中的read方法有什么区别?
其实,BufferedReader作为Read的一种缓冲区,其实就是为了提高效率的,原理其实很简单:
在Read类中的read()方法是将硬盘上的字符一个个读取出来使用,
而BufferedReader中的read()方法是将缓冲区中的字符一个个读出来使用,缓冲区是主内存中特地预留出的内存,
从缓冲区里面取数据的效率一般是比直接在硬盘上取数据要快的...(缓冲区我就不介绍了,直接上例子)
**就好比**:
- 厨房里面有一大堆包子,之前每次你想吃包子总是需要跑到厨房去拿,而现在有了一个大盘子(缓冲区),
- 你就可以现在盘子里装好包子,然后想吃的时候去盘子里拿一个就好了。
简单来说就是一句话:
- 覆盖后的read()方法效率更高...
readLine方法
BufferedReader中比较有意思的方法就是这个readLine方法了,这个方法是读取一行字符的,其实原理也很简单。
readLine方法其实是使用了缓冲区的read方法(就是上面讲到的read方法)
将读到的字符进行缓冲(缓冲在一个临时容器里面),读到换行符(\n或者\r
这个主要是考量在不同操作系统上的换行符不一样)就停止(ps:不会把换行符读进去的哈),然后将结果以字符串的形式返回
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Spring @Cacheable注解类内部调用失效的解决方案
这篇文章主要介绍了Spring @Cacheable注解类内部调用失效的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-01-01Spring MVC中@Controller和@RequestMapping注解使用
这篇文章主要介绍了Spring MVC中@Controller和@RequestMapping注解使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-02-02
最新评论