표준 입출력은 콘솔을 통한 데이터 입력, 콘솔로의 데이터 출력을 의미한다. 자바에서는 이러한 표준 입출력을 위해 3가지 입출력 스트림, System.in, System.out, System.err을 제공한다. 해당 스트림은 자동적으로 자바 어플리케이션의 실행과 동시에 생성된다.

System.in  //콘솔로부터 데이터를 입력받는데 사용(InputStream)
System.out //콘솔로 데이터를 출력하는데 사용(PrintStream)
System.err //콘솔로 데이터를 출력하는데 사용(PrintStream)

해당 스트림들은 InputStreamPrintStream이 사용되는 것 같지만 실제로는 BufferedInputStreamBufferedOutputStream을 이용한다.

System.in.read()가 호출된 경우 데이터의 입력을 기다리는 대기상태로 전환이 된다. 이 때 Enter를 누르게 되면 입력 대기 상태에서 벗어나 현재 버퍼에서 있는 데이터를 읽을 수 있으며 이 때 \r(캐리지 리턴 : 커서를 현재 라인 첫번째 컬럼으로 이동), \n(줄바꿈)을 자동으로 붙이게 된다.

^Z 또한 입력 대기 상태를 벗어나도록 도와주며 해당 명령은 System.in.read()에 -1을 반환하도록 한다.