312 标准输入流

312 标准输入流

(理论课)

(myOtherStream)

(讲解Scanner(System.in)的原理)

(查看帮助文档System)

312 标准输入流_第1张图片

312 标准输入流_第2张图片

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

 */

你可能感兴趣的:(Java,IO流,java)