Java中对于IO操作有三种标准流:
System.out,System.err,System.in
其中通过标准输入流,只能读一个字节,所以一般要和Scanner合用
Scanner scan = new Scanner(System.in)
还有就是System.err与一般我们程序的线程不是同一个,所以你会发现下面代码中,
hello和error的输出结果的顺序不是固定的。
代码:
package JavaStream;
import java.io.IOException;
import java.io.InputStream;
//三种标准流
//System.out,System.err,System.in
//但是System.in不能直接用
public class StandardStream {
public static void main(String[] args) throws IOException {
System.out.println("hello");
//System.err线程不同,所以结果error和hello的输出顺序每一次不一定相同
System.err.println("error");
//标准输入流,只能读一个字节
//所以一般我们要用Scanner包一下
InputStream in = System.in;
int i = in.read();
System.out.println((char)i);
}
}
同样我运行两次会出现下面两种不同的结果(输出顺序不同)
这就是前面所说的线程不同造成的。