Scanner和BufferReader区别
来源:互联网 发布:ios 电商源码 编辑:程序博客网 时间:2024/04/29 23:20
在Java中,我们都知道Java的标准输入串是System.in。但是我们却很少在Java中看到谁使用它,这是因为我们平时输入的都是一个字符串或者是一个数字等等。而System.in提供的read方法是通过字节来读取数据的,所以对我们来说太麻烦啦!
在Java SE6中我们可知道一个非常方便的输入数据的类Scanner,位于java.util包中,这个Scanner的具体用法为Scanner in = new Scanner(System.in);。通过new创建一个Scanner对象,Scanner需要传入一个System.in作为参数,这个我们可以看作是Scanner通过其内部机制将System.in包装起来而实现数据的读取工作的。Scanner对象通过一系列的in.nextXxx();方法来读取相应的基本类型的数据,通过in.hasNextXxx();方法来判断是否还有下一个数据。
然而,Scanner读取数据是按空格符,这其中包括空格键,Tab键,Enter键。只要遇到其中之一,Scanner的方法就会返回下一个输入 ,这也就是我们会面临的另一个问题,当我们的输入数据中有空格时,我们就不会得到我们想要的数据,这样我们就要考虑到BufferReader来读取数据啦!
BufferReader位于java.io包中,使用BufferReader就相对来说没有那么多方法来让你选择啦!读取数据比较固定,这样格式也就相对来说比较单一,只要记住就这一读取数据的方法。BufferReader br = new BufferReader(new InputStreamReader(System.in));。这个BufferReader对象通过readLine();方法来读取数据,readLine()是按Enter回车来读取一行数据的,只要在回车键之前的都会被readLine();方法返回,
然而,要使用BufferReader输入一些字符之外的类型的数据,就要相对比较麻烦,需要通过一些XXXX.parseXxx();来转换相应的数据类型,虽然,麻烦一些,但通过在一些OJ系统上的和Scanner作对比,BufferReader的效率要比Scanner高一倍,这个差距可想而知,读取的数据越多,效果就越明显。
具体使用例子可以看:import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
String str;
int a;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//读取一行字符串
str = br.readLine();
//将字符转化为整型
a = Integer.parseInt(str);
System.out.println(a);
}
}
这个是Scanner的例子;import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner in = new Scanner(System.in);
//输入字符串
String str = in.next();
//输入整型
int a = in.nextInt();
System.out.println(str);
System.out.println(a);
}
}
总结:BufferedReader 这块效率高,但是呢,BufferedReader 的输入这块格式比较固定,只能使用readline()的方式读取一行文本(其实Scanner.nextLine也可以读取一行文本),如果想将BufferedReader .readLine()的文本(默认是字符串类型)转换成其他类型的话,需要调用相应的方法(比如说想换成int类型的话,调用Integer.parseInt(BufferedReader .readLine()方法去转换格式))
0 0
- Scanner和BufferReader区别
- Scanner和BufferReader区别
- Scanner和BufferReader之区别
- Scanner和BufferReader
- Scanner和BufferReader difference
- bufferreader 和scanner情况
- Scanner与BufferReader的区别
- Java中Scanner类和BufferReader类之间的区别
- Java中Scanner类和BufferReader类的区别
- Scanner和BufferReader对象输入输出
- BufferReader和Scanner的使用
- Scanner和BufferReader用法详记
- Java输入流之BufferReader和Scanner的用法!
- Java输入流之BufferReader和Scanner的用法!
- BufferReader与Scanner的用法比较
- Scanner和BufferedReader的区别
- 关于Scaner和BufferReader
- 关于Scaner和BufferReader
- HTML5 重力感应 JS调试
- 软件测试的原则
- groovy及gradle dsl文档地址
- MySQL语句
- MarkDown常用语法及示例
- Scanner和BufferReader区别
- Git分支 - 变基
- Delphi 调试
- MySQL通用优化技巧 | Ucloud运维在线微信群分享
- 利用PHPExcel实现Excel文件的写入和读取
- 关于Form 表单
- C++ Primer Plus(第六版)--学习杂记(第四章)
- 第三周项目1 顺序表的基本运算(2)
- 实现一个比较高级的字符匹配算法,即一串很长的字符,要求找到符合要求字符的字符串