A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
1、成员变量in、out、err
    System类内部包含inouterr三个成员变量,分别代表标准输入流(键盘输入),标准输出流(显示器)和标准错误输出流(显示器)
例如:
    charc=System.in.read();//由键盘读入一个字节的数据送给字符变量c
    System.out.println("Hello! Guys,");//
由屏幕输出一个字符串

    其实
out, in err是它的静态属性:
  1. public final static InputStream in = nullInputStream();
  2. public final static PrintStream out = nullPrintStream();
  3. public final static PrintStream err = nullPrintStream();
复制代码

2System类的标准输入(in),输出(out)和错误流(err)使用的例子:
  1. package jdk.lang;  
  2. <font size="4">    </font>public class SystemIOE {  
  3.      public static void main(String[] args) throws Exception {  
  4.          System.out.println("Hello Out");  
  5.          System.err.println("Hello Error");  
  6.          int count = System.in.read(b);  
  7.         System.out.println(new String(b, 0, count));  
  8.      }  
  9. }
复制代码

    如果在Eclipse上运行输出:
    Hello Out
    Hello Error
    Hello In
    Hello In
    JVM启动的时候通过Java运行时初始化这3个流,所以你不需要初始化它们(尽管你可以在运行时替换掉它们)。
System.in
    System.in是一个典型的连接控制台程序和键盘输入的InputStream流。通常当数据通过命令行参数或者配置文件传递给命令行Java程序的时候,System.in并不是很常用。图形界面程序通过界面传递参数给程序,这是一块单独的Java IO输入机制。
System.out
    System.out是一个PrintStream流。System.out一般会把你写到其中的数据输出到控制台上。System.out通常仅用在类似命令行工具的控制台程序上。System.out也经常用于打印程序的调试信息(尽管它可能并不是获取程序调试信息的最佳方式)。
System.err
    System.err是一个PrintStream流。System.err与System.out的运行方式类似,但它更多的是用于打印错误文 本。一些类似Eclipse的程序,为了让错误信息更加显眼,会将错误信息以红色文本的形式通过System.err输出到控制台上。
System.out和System.err的简单例子:
    这是一个System.out和System.err结合使用的简单示例:
  1.                   try {
  2.                             InputStream input = new FileInputStream("c:\\data\\...");
  3.                           System.out.println("File opened...");
  4.                   } catch (IOException e) {
  5.                           System.err.println("File opening failed:");
  6.                           e.printStackTrace()
  7.                   }
复制代码

替换系统流
    尽管System.in, System.out, System.err这3个流是java.lang.System类中的静态成员(译者注:这 3个变量均为final static常量),并且已经预先在JVM启动的时候初始化完成,你依然可以更改它们。只需要把一个新的InputStream 设置给System.in或者一个新的OutputStream设置给System.out或者System.err,之后的数据都将会在新的流中进行读 取、写入。
可以使用System.setIn(), System.setOut(), System.setErr()方法设置新的系统流(译者注:这三个方法均为静态方法,内部调用了本地native方法重新设置系统流)。例子如下:
  1.     OutputStream output = new FileOutputStream("c:\\data\\system.out.txt");
  2.     PrintStream printOut = new PrintStream(output);
  3.     System.setOut(printOut);
复制代码
现在所有的System.out都将重定向到”c:\\data\\system.out.txt”文件中。请记住,务必在JVM关闭之前冲刷System.out(译者注:调用flush()),确保System.out把数据输出到了文件中。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马