312 标准输入流
(理论课)
(myOtherStream)
(讲解Scanner(System.in)的原理)
(查看帮助文档System)
System类中有两个静态的成员变量
- public static final InputStream in 标准输入流,通常该流对应键盘输入or由主机环境or由用户指定的另一个输入源
- public static final OutputStream out 标准输出流,通常该流对应显示输出or由主机环境or由用户指定的另一个输出目标
(这里说的in、out,是变量,System类中的变量)
---------------------------------------------
package e312;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Scanner;
public class SystemInDemo {
public static void main(String[] args) throws IOException {
// InputStream is = System.in;
// int by;
// while ((by = is.read()) != -1) {
// System.out.print((char) by);
// }
// 以上代码,运行后可在键盘输入数据,但不可输入中文,否则写屏乱码
// 因字节流默认使用UTF-8编码然后解码,故乱码
//如何把字节流转换为字符流?——用转换流
// InputStreamReader isr = new InputStreamReader(is);
//如何把字节流转换为字符流,且能读取一行?
//这就需要字符缓冲输入流(BufferedReader)的特有方法
// BufferedReader br=new BufferedReader(isr);
// 截止上句为止,InputStreamReader isr = new InputStreamReader(is);通过is(字节流)读数据
// 然后InputStreamReader isr = new InputStreamReader(is)把数据转换为字符流
// 然后BufferedReader br=new BufferedReader(isr);把数据包装起来,以便使用字符缓冲输入流(BufferedReader)的特有方法读取一行的数据
//以上3步可以1步到位
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//下面进行测试
System.out.println("\tsay something?");
String line = br.readLine();
System.out.println("\tyou said that:" + line);
System.out.println("\n\tgive me a integer:");
int i = Integer.parseInt(br.readLine());
System.out.println("\tyour integer is:" + i);
// 自己实现键盘录入数据太麻烦了,Java提供了一个类供我们直接使用,就是Scanner
Scanner sc = new Scanner(System.in);
}
}
/*
say something?
你好
you said that:你好
give me a integer:
4
your integer is:4
*/