Scanner和BufferedReader的区别和用法

在命令行模式下要输入数据至程序中时,我们可以使用标准输入串对象System.in.但是,我们并不经常直接使用它,因为System.in提供的 read方法每次只能读取一个字节的数据,而我们平时所应用的通常是读取一个字符串或者是一个数字,所以read方法所以提供的功能,对我们来说并没有太大的用处.
在Java SE 6中,可以使用Scanner类取得用户的输入,Scanner类位于java.util包中,如果你要使用Scanner取得用户输入的话,要加上 import java.util.Scanner;这条语句.import的功能是告诉编译器,你将使用java.util包中的Scanner类. 我们来看一个例子: import java.util.Scanner;
public class TestScanner{
public static void main(String[] args){
Scanner scan = new Scanner(System.in); System.out.println("请输入一个字符串:");
System.out.println("您输入的字符串是:" + scan.next()); } }

运行上面的程序,你将会看到你输入的字符串将在下面原样显示出来.
我们来看看这个程序中每条语句的意思:
new是创建一个对象,程序中new的意思是创建了一个Scanner类的对象scan.但是在创建Scanner类的对象时,需要用System.in 作为它的参数,也可以将Scanner看作是System.in对象的支持者,System.in取得用户输入的内容后,交给Scanner来作一些处理. Scanner类中提供了多个方法:
next():取得一个字符串;
nextInt():将取得的字符串转换成int类型的整数;
nextFloat():将取得的字符串转换成float型;
nextBoolean():将取得的字符串转换成boolean型;

用Scanner获得用户的输入非常的方便,但是 Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入. 当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑使用BufferedReader类取得输入.其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.
BufferedReader类位于java.io包中,所以要使用这个类,就要引入java.io这个包:import java.io.BufferedReader.
使用BufferedReader对象的readLine()方法必须处理java.io.IOException异常(Exception).
使用BufferedReader来取得输入,理解起来要复杂得多.但是使用这个方法是固定的,每次使用前先如法炮制就可以了.
BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
String text = buffer.readLine();

Scaner VS bufferedReader相关推荐

  1. 运维开发工程师(BKDS)理论基础

    运维开发工程师(BKDS)理论基础 蓝鲸SaaS开发框架包含哪些Web防护策略? A. 防 CSRF 攻击 B. 防 XSS 攻击 C. 防 SQL注入 D. 没有Web安全防护 正确答案:A,B,C ...

  2. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    Java IO流学习总结四:缓冲流-BufferedReader.BufferedWriter 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/det ...

  3. Java学习总结:49(字符缓冲流:BufferedReader)

    字符缓冲流:BufferedReader 在开始前先让我们来看一段代码 package Project.Study.IOSystem;import java.io.InputStream;public ...

  4. java bufferedwrite_Java BufferedWriter BufferedReader 源码分析

    一:BufferedWriter 1.类功能简介: BufferedWriter.缓存字符输出流.他的功能是为传入的底层字符输出流提供缓存功能.同样当使用底层字符输出流向目的地中写入字符或者字符数组时 ...

  5. 经典br = new BufferedReader(new InputStreamReader(process.getInputStream()));

    br = new BufferedReader(new InputStreamReader(process.getInputStream()));

  6. java编写socket使用bufferedReader.readLine()问题研究

    不写java代码好久,临时写个socket通讯竟然失败,郁闷之下仔细研究了下. 客户端使用BufferedReader来读取数据,在while中调用BufferedReader.readLine()函 ...

  7. BufferedReader和PrintWriter读写中文的问题

    最近用BufferedReader读一个文本文件,然后再将读出的内容用PrintWriter写入到另外一个新的文件中. 之前一直没有发现这个问题,就是如果文本内容中有中文,在读出的内容和写入的内容都会 ...

  8. Java :BufferedWriter类和BufferedReader类的构造方法、主要方法

    BufferedWriter 和 BufferedReader 为带有默认缓冲的字符输出输入流,因为有缓冲区所以效率比没有缓冲区的高. 一.BufferedWriter 类 构造方法:buffered ...

  9. java bufferedreader mark_BufferedReader之mark与reset初探

    关键是参数readAheadLimit的解释,从字面上看是往前读的限制 ,也就是表示"可以再读多少".再看详细解释: 是指当还保留有此mark时(i.e.mark未变化),可以再读 ...

最新文章

  1. 让学生网络相互学习,为什么深度相互学习优于传统蒸馏模型?| 论文精读
  2. Grafana文档(升级Grafana)
  3. go int 转char_Go语言的奇特语法,你怎么看?
  4. 吃透这套架构演化图,从零搭建Web网站也不难
  5. python循环for不从零开始_Python-多处理-巨大的for循环
  6. 亚洲食品市场挑战:了解亚洲新消费群体
  7. RAID简单介绍和Linux如何搭建一个RAID
  8. java 6的代号是,Java入门第二季6.1问题编码Plus版
  9. excel文件因服务器未响应无法打开,excel打开显示兼容模式(未响应)
  10. 快速掌握用户分层模型(RFM)的使用方法|【业务模型】
  11. VBS学习笔记(4): WScript //d //x MyScript.vbs,调试无法启动
  12. 支付宝小程序卡包开发(流程+详细案例+商户会员卡)
  13. 2023款联想小新pro16和Thinkbook16+ 区别选哪个 更值得入手
  14. 如何将iPhone核心数据与Web服务器同步,然后推送到其他设备? [关闭]
  15. 考研数学汤家凤笔记第一章:极限与连续
  16. latex 特殊符号[箭头/希腊]
  17. python怎样分析文献综述怎么写_本科毕业论文如何撰写文献综述
  18. 首都师范大学计算机考研调剂,2018年首都师范大学考研调剂信息
  19. 中兴通讯如何以5G技术实现数字化转型?
  20. Android-掷骰子

热门文章

  1. 基于EasyNVR实现RTSP_Onvif监控摄像头Web无插件化直播监控之视频直播网络占用率大如何解决的问题分析
  2. 小米面试offer加油
  3. Altium Designer快捷键布线无法实现网络线自动编号
  4. oracle Error: PLS-00905: 对象 HBH.QRY_QUERYDATA 无效
  5. GIS领域常用软件工具(框架)介绍与推荐
  6. 关于便携式打印机程序开发(一、原生安卓蓝牙调用)
  7. 使用计算机视觉来做异常检测
  8. 【HMS Core】【FAQ】【Health Kit】集成运动健康服务过程中,遇到一些小问题,今天分享给大家(华为手表、手环+运动健康服务问题合集)
  9. appium inspect session closed due to inactivity
  10. PHP+Laravel+Fpdi+Fpdf 在PDF模板上编辑自定义文字并输出新PDF文件示例