知识点:
缓冲输入流是在开发之中,也经常大量使用到工具类,其目的是解决数据的乱码问题,
现在最直观的解决方式就是System.in所带来的问题。
具体内容:
如果要进行中文数据的处理首先想到的一定是字符流,并且要想完整的处理数据,一定需要到缓冲区。可是对于缓冲区的操作有两种流:
字符流缓冲区流:BufferedReader BufferedWriter
字节流缓冲区流:BufferedInputStream BufferedOutStream
其中BufferedReader的public String readLinr() throws IOException读取一行数据,以换行符为界。
其构造方法:public BuffereReader(Reader in),System.in不能处理中文,应该用BufferedReader处理中文,System.in是InputStream类型的,故InputStreamReader;
键盘输入的标准格式:
package 线程;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestDemo {
//System.in是InputStream类型对象
//BufferedReader的构造方法里面最需要接受Reader类对象
//利用InutStreamReader将字节流变为字符流
public static void main(String[] args) throws IOException {
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入数据:");
String str = buf.readLine(); //以回车作为换行
System.out.print("输入的内容:"+str);
}
}
Scanner类型:
构造方法:public Sanner(InputStream source),接受一个InputStream类对象
在Scanner类里面定义了两大组方法:
判断是否有指定数据:public boolean hasNextXxx();
取出数据:public String nextXxx();
范例:以键盘输入数据为例
package 线程;
import java.util.Scanner;
public class demo {
public static void main(String args){
Scanner scan = new Scanner(System.in);
System.out.print("请输入数据:");
if(scan.hasNext()){
System.out.print(scan.next());
}
scan.close();
}
}