System还包含3个预定义的流变量:in,out以及err。这些变量在System类中被声明为public static final。这意味着程序中的其他任何部分都可以使用它们,而不需要引用特定的System对象。
System.out引用标准的输出流,默认情况下是控制台。System.in引用标准的输入流,默认情况下是键盘。System.err引用标准的错误流,默认情况下也是控制台。但是,这些流可以被重定向到任何兼容的I/O设备。
System.in是InputStream类型的对象;System.out和System.err是PrintStream类型的对象。这些都是字节流,尽管它们通常用于从控制台读取字符以及向控制台写入字符。可以看出,如果愿意的话,可以在基于字符的流中封装这些流。