Java浅谈BufferedReader
既然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的更多相关文章
- java 浅谈web系统当中的cookie和session会话机制
一 Cookie: 1. Cookie翻译为小甜饼,有一种特殊的味道.cookie主要用来在(浏览器)客户端做记号用的.Cookie不属于java,Cookie是一种通用的机制,属于HTTP协议的一部 ...
- [Android&Java]浅谈设计模式-代码篇:观察者模式Observer
观察者,就如同一个人,对非常多东西都感兴趣,就好像音乐.电子产品.Game.股票等,这些东西的变化都能引起爱好者们的注意并时刻关注他们.在代码中.我们也有这种一种方式来设计一些好玩的思想来.今天就写个 ...
- 浅谈JAVA中如何利用socket进行网络编程(二)
转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈Java中的equals和==(转)
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...
- 浅谈Java中的对象和引用
浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...
- 浅谈Java中的equals和==
浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...
- 浅谈JAVA集合框架
浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...
- 浅谈java性能分析
浅谈java性能分析,效能分析 在老师强烈的要求下做了效能分析,对上次写过的词频统计的程序进行分析以及改进. 对于效能分析:我个人很浅显的认为就是程序的运行效率,代码的执行效率等等. java做性能测 ...
- 浅谈Java中的深拷贝和浅拷贝(转载)
浅谈Java中的深拷贝和浅拷贝(转载) 原文链接: http://blog.csdn.net/tounaobun/article/details/8491392 假如说你想复制一个简单变量.很简单: ...
随机推荐
- JSONObject--- JSON---与bean对象的转换
1.对象PO转json-string: String json = JSON.toJSONString(customerBueventAccountPO); 1.可能用到的jar宝: json-li ...
- uni-app app定位当前地理位置
https://blog.csdn.net/HXH_csdn/article/details/112258398?utm_medium=distribute.pc_relevant.none-task ...
- python进度条实现的几种方法
一.普通进度条(time实现) import time def progress_bar(): for i in range(101): print(f'\rProgress: {"#&qu ...
- appium(三)使用方法
一.appium环境搭建(先决条件) 1.安装JDk 2.安装SDK 参考文章:https://www.cnblogs.com/mrwhite2020/p/13160994.html 3.安装appn ...
- @RequestParam与@RequestBody使用对比
转载请注明出处: @RequestParam 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容. (Http协议中,如果不指定Con ...
- NCC Mocha v0.10 发布, .NET 开发的基于 OpenTelemetry 的 APM 系统
目录 项目简介 项目进度 v0.10 发布内容 项目背景 平台功能 技术架构 v0.10 快速体验 启动项目 Trace 数据的发送 配置 Jaeger 数据源 Trace 数据的查询 项目简介 Mo ...
- zookeeper源码(01)集群启动
本文介绍一下zookeeper-3.5.7集群安装. 解压安装 tar zxf apache-zookeeper-3.5.7-bin.tar.gz 创建数据.日志目录: mv apache-zooke ...
- AHB 设计要点
Hreadyout 每个slave回复hreadyout通过mux给到master master会将hreadyin信号给到每个slave hreadyout开始的时候都为1,如果是为0,会出现问题, ...
- SV概述
System Verilog概述 路科验证视频,B站可看(补充一下知识) 学习SV之前,最好有Verilog基础 SV诞生 SV发展历史 Verilog - 偏向于设计 System Verilog ...
- Qt5.9 UI设计(一)——在win10系统上安装Qt5.9
安装环境 win10 系统 Qt5.9.0 版本 官方下载地址 可以从官方网站获取:https://www.qt.io/zh-cn/ 现在的安装包跟以前的有些区别,加上网络比较慢,我这里演示的是Qt5 ...