请问Java 当中:输入流中的System.in是什么意思

来源:百度知道 编辑:UC知道 时间:2024/05/22 07:29:15
请问Java 当中:输入流InputStreamReader中为什么要写(System.in)
输出流BufferedReader为什么要写(in)
请详细讲解一下

首先明确一个概念
InputStreamReader 和BufferedReader都是输入流
System.in 读取的是字节流
InputStreamReader读取的是字符流
BufferedReader读取的是字符串
System.in 和InputStreamReader属于低级流
BufferedReader属于高级流
通过高级流封装低级流 使我们更加方便操作

一个 InputStreamReader 类是从字节流到字符流的桥梁:它读入字节,并根据指定的编码方式,将之转换为字符流。使用的编码方式可能由名称指定,或平台可接受的缺省编码方式。

InputStreamReader 的 read() 方法之一的每次调用,可能促使从基本字节输入流中读取一个或多个字节。为了达到更高效率,考虑用 BufferedReader 封装 InputStreamReader,例如:

InputStreamReader in = new InputStreamReader(System.in);
// System.in为系统基本输入输出,即键盘输入.调用System.in方法获得输入字符串,并用该字符串作为参数生成一个InputStreamReader对象in

BufferedReader dr = new BufferedReader(in);
//用InputStreamReader对象in作为参数生成一个IBufferedReader对象dr.用BufferedReader 封装 InputStreamReader,从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。

关键要素说明:InputStreamReader 是将标准输入字节流转换为用于输入的字符流;BufferedReader将字符流转换为缓冲流,利用缓冲流的API的函数System.in读入命令行输入的一行字符,并赋值给字符串变量。

可对比System.out,它是往控制台输出
而System.in是往控制台输入
API中的