표준 입출력은 콘솔을 통한 데이터 입력과 콘솔로의 데이터 출력을 의미한다. 자바에서는 표준 입출력을 위한 3가지 스트림, System.in, System.out, System.err를 제공한다.
이 3가지 입출력스트림은 자바 어플리케이션이 실행되면 생성되고 종료되면 자동으로 닫힌다. 따라서 별도의 생성없이 System.out스트림의 메서드(println등)을 사용할 수 있다.
System.in
콘솔로부터 데이터를 입력받는데 사용(표준 출력)
System.out
콘솔로 데이터를 출력하는데 사용(표준 입력)
System.err
콘솔로 데이터를 출력하는데 사용(표준 입력)
System클래스의 소스를 보면 in, out, err는 System클래스에 선언된 클래스변수(static)이다.
public final class System {
public final static InputStream in = nullInputStream();
public final static PrintStream out = nullPrintStream();
public final static PrintStream err = nullPrintStream();
...
}
선언부만 봐서는 InputStream/PrintStream으로 구성된 것 같지만 실제로는 버퍼를 이용하는 BuffefredInputStream과, BufferedOutputStream의 인스턴스를 사용한다.
초기에는 System.in, System.out, System.err의 입출력대상이 콘솔 화면 이었으나 setIn(), setOut(), setErr()를 사용해 콘솔 외의 다른 입출력 대상으로 변경하는 것이 가능하다.
※ JAVA5부터 java.util.Scanner클래스로 System.in으로 부터 데이터를 입력받아 작업하는 것이 편리해 졌다.
System.out.println("out : Hello World!");
System.out.println("err : Hello World!");