java System类的成员变量,PrintStream out,InputStream in,PrintStream err详解

阳光 2020-09-30 11:48:18 java常见问答 6399

System类有3个静态成员变量,他们分别是PrintStream out、InputStream in和PrintStream err,下面的话就来讲一下这三个成员变量。

1. PrintStream out

标准输出流

此流已打开并准备接收输出数据。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

例如,编写一行输出数据的典型方式是:

System.out.println(data);

其中,println 方法是属于流类 PrintStream 的方法,而不是 System 中的方法。

2. InputStream in

标准输入流。此流已打开并准备提供输入数据。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。

3. PrintStream err

标准的错误输出流。其语法与 System.out 类似,不需要提供参数就可输出错误信息。也可以用来输出用户指定的其他信息,包括变量的值。

例 1

编写一个 Java 程序,使用本节介绍的 System 类实现从键盘输入字符并显示出来。 具体实现代码如下:

import java.io.IOException;
public class Test06
{
    public static void main(String[] args)
    {
        System.out.println("请输入字符,按回车键结束输入:");
        int c;
        try
        {
            c = System.in.read(); // 读取输入的字符
            while (c != '\r')
            { // 判断输入的字符是不是回车
                System.out.print((char) c); // 输出字符
                c = System.in.read();
            }
        }
        catch (IOException e)
        {
            System.out.println(e.toString());
        }
        finally
        {
            System.err.println();
        }
    }
}

以上代码中,System.in.read() 语句读入一个字符,read() 方法是 InputStream 类拥有的方法。变量 c 必须用 int 类型而不能用 char 类型,否则会因为丢失精度而导致编译失败。

以上的程序如果输入汉字将不能正常输出。如果要正常输出汉字,需要把 System.in 声明为 InputStreamReader 类型的实例,最终在 try 语句块中的代码为:

InputStreamReader in = new InputStreamReader(System.in, "GB2312");
c = in .read();
while (c != '\r')
{
    System.out.print((char) c);
    c = in .read();
}

如上述代码所示,语句 InputStreamReader in=new InputStreamReader(System.in,"GB2312") 声明一个新对象 in,它从 Reader 继承而来,此时就可以读入完整的 Unicode 码,显示正常的汉字。

更多java入门知识,请继续来奇Q工具网进行了解吧。

推荐阅读:

java中swing包中的类有哪些?详细解析

Java System类,System类的成员变量详解

Java Byte类,Byte类的构造方法和常用常量介绍