既然Scanner简单好用,为什么要用BufferedReader呢?

主要原因是面对大量的读入显得较慢且不安全,这里体现在三个方面,一方面是解析的问题,好用意味着封装的更复杂,一拖n的接口解析起来会慢;另一方面是缓冲区的问题,Scanner缓冲区小1024KB,直面物理介质的机会更大,众所周知,IO时间在大数据面前总是拖后腿的。而BufferedReader是面对字符流的输入,虽然面对二进制等形式充满困扰,但是文本文件还是主流形式,自然他也是读入的强力工具,处理对象单一使得他的底层操作更简单,效率更高,并且拥有一个8192KB的缓冲区域,缓冲区域更大;最后一个方面是关于同步的问题,BufferedReader的read函数添加了synchronized同步关键字,每次读入程序只能由一个线程执行,不会出现并发读入导致的错误,例如:同一个缓冲区域中,A和B都要读取同一行内容,A读取走了B读取的不完整,或者A持续拥有缓冲区的权限导致B读取的内容不正确等等问题。

BufferedReader如何构造以及使用?

BufferedReader br = new BufferedReader(Reader in);

BufferedReader采用的是装饰者模式,主要是为其他读取流增加额外的功能,比如缓冲区,更简单高效的读取操作等;被装饰者则是Reader抽象类的具体实现类,比如InputStreamReader、FileReader等;这里给出一个从控制台读入的代码段:

int n;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());

Tips:主要是用来处理字符串文本,想要处理数字等常见形式可以基于Integer等形式自带的格式转换。

Java浅谈BufferedReader的更多相关文章

  1. java 浅谈web系统当中的cookie和session会话机制

    一 Cookie: 1. Cookie翻译为小甜饼,有一种特殊的味道.cookie主要用来在(浏览器)客户端做记号用的.Cookie不属于java,Cookie是一种通用的机制,属于HTTP协议的一部 ...

  2. [Android&Java]浅谈设计模式-代码篇:观察者模式Observer

    观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...

  3. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  4. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  5. 浅谈Java中的equals和==(转)

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...

  6. 浅谈Java中的对象和引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  7. 浅谈Java中的equals和==

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...

  8. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...

  9. 浅谈java性能分析

    浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...

  10. 浅谈Java中的深拷贝和浅拷贝(转载)

    浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...

随机推荐

  1. Android 3分钟带你入门开发测试

    作者:Zhu Yifei 作为一名合格的开发人员,基本的开发测试能力必不可少,开发测试分单元测试和UI测试,通过开发测试可以减少开发人员自测时间,提升开发质量.本篇文章可以帮助初级开发人员快速了解开发 ...

  2. redis管道技术pipeline一 ——api

    import java.io.UnsupportedEncodingException; import java.util.Set; import org.springframework.beans. ...

  3. Live Server插件打开浏览器时:该网页无法正常运作,127.0.0.1未发送任何数据的问题解决

    一.问题复现 今天使用Vs Code写HTML代码时,使用Live Server打开预览时,发现浏览器显示"该网页无法正常运作,127.0.0.1未发送任何数据"的问题. 二.解决 ...

  4. SpringCloud学习 系列五、创建生产者和消费者验证微服务中心 Eureka的作用

    系列导航 SpringCloud学习 系列一. 前言-为什么要学习微服务 SpringCloud学习 系列二. 简介 SpringCloud学习 系列三. 创建一个没有使用springCloud的服务 ...

  5. 五、mongo备份篇 mongoexport、mongoimport 以及mongodump、mongorestore

    系列导航 一.linux单机版mongo安装(带密码验证) 二.mongo集群搭建 三.java连接mongo数据库 四.java对mongo数据库增删改查操作 五.mongo备份篇 mongoexp ...

  6. R语言—数据基础及练习

    ## 创建leadership数据框 manager <- c(1,2,3,4,5) date <-c("10/24/08","10/28/08", ...

  7. AI伴侣下载

    总结 现在网页上很多下载的AI伴侣下载下来都会有些问题或者不能用,如下链接下载的AI伴侣亲测可以使用! (连接后会提示更新,博主没有选择更新,如有需要也可以更新) https://mit-ai2-co ...

  8. 【linux】虚拟机 ubuntu 使用 sudo apt-get install 安装软件出现 “Unable to locate package xxx ”解决方法

    使用 sudo apt-get install 安装软件出现如下错误 上述错误表示找不到软件源,可更改软件源服务器解决 还有工具链 arm-none-eabi-gcc 实际安装的是 sudo apt ...

  9. [转帖]Guanaco, Llama, Vicuña, Alpaca该怎么区别

    https://zhuanlan.zhihu.com/p/106262896 在智利和秘鲁高原区经常会遇到的一种动物让人十分挠头,学术点称呼就是骆驼科其中一个族群--羊驼属和骆马属.头疼在于,分不清楚 ...

  10. [转帖]018 磁盘 IO 性能监控 / 压测工具 (sar、iotop、fio、iostat)

    https://my.oschina.net/u/3113381/blog/5465063   1 sar 命令查看当前磁盘 IO 读写 sar(System Activity Reporter 系统 ...