BufferedReader 直接创建字符流,Scanner将字节流转化成字符
二者都可以从键盘接收数据,API文档解释,public BufferedReader(Reader in)方法创建使用默认大小的输入缓冲区的缓冲字符输入流。public Scanner(InputStream source) 构造一个新的扫描器,它产生从指定的输入流扫描的值,从流字节转换为字符使用基础平台的默认字符集。
Scanner的用法:
import java.util.Scanner;
public class Main {
private static Scanner scan;
public static void main(String[] args) {
System.out.println("请输入一行字符串:");
scan = new Scanner(System.in);
String str = scan.nextLine();
System.out.println("用scanner输入的字符串是:");
System.out.println(str);
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
System.out.println("请输入一行字符串:");
BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
String str = stdin.readLine();
System.out.println("用BufferedReader输入的字符串是:");
System.out.println(str);
}
BufferedReader.readLine()方法和Scanner.nextLine()方法用法是一样的,都是接收一行内容,以回车换行符结束,但不包括回车换行符。
用 Scanner获得用户的输入非常的方便,但是Scanner取得输入的依据是空格符,包括空格键,Tab键和Enter键.当按下这其中的任一键时,Scanner就会返回下一个输入,而BufferedReader只有Enter键才有效 .当你输入的内容中间包括空格时,显然,使用Scanner就不能完整的获得你输入的字符串.这时候我们可以考虑使用BufferedReader类取得输入.其实在Java SE 1.4及以前的版本中,尚没有提供Scanner方法,我们获得输入时也是使用BufferReader的.
BufferedReader常用方法
BufferedReader(Reader in)
BufferedReader(Reader in, int size)
void close()
void mark(int markLimit)
boolean markSupported()
int read()
int read(char[] buffer, int offset, int length)
String readLine()
boolean ready()
void reset()
long skip(long charCount)
Scanner常用方法:
next():取得一个字符串;
nextInt():将取得的字符串转换成int类型的整数;
nextFloat():将取得的字符串转换成float型;
nextBoolean():将取得的字符串转换成boolean型;
具体使用哪个还是要依据实际情况普通的输入的话建议用Scanner, 空格结束当前的输入比较常用,(如果你先学了C语言).