I/O
표준 입출력 스트림
System.in: console input
System.out: console output
System.err: error stream(쓸 일 없음)
표준 입출력 변경
System.setIn()
System.setOut()
System.setErr()
보통 파일 입출력으로 전환하는 데에 쓰임
java.util.Scanner
- 파일, 콘솔, 문자열 등 입력 source를 다양하게 설정할 수 있음
nextInt(), nextLong() 등 다양한 타입으로 변경할 수 있는 메소드를 지원함
nextLine() 사용 시 입력 버퍼에 남은 Enter 주의
Vs. java.io.BufferedReaeder
BufferedReader가 월등히 빠름
- 근데 입력 데이터 양이 매우 적다면 유의미한 차이는 없음
- 입력이 많다의 기준: 2차원 배열,
N >= 10
next() Vs. nextLine()
next()는 공백, 탭 등 white space를 포함할 수 없다.
next()는 엔터 전까지, nextLine()은 엔터까지
- 그래서
next() 나 nextInt() 호출 후 nextLine() 호출하면 입력버퍼에 남은 줄바꿈 때문에 (사실상) 그냥 스킵된다.
next(), nextInt(), nextDouble()끼리는 괜찮은데 nextLine() 호출 전에는 입력 버퍼(에 남은 개행 문자)를 비워줘야 한다.
nextChar()는 없다.
- 문자 하나 입력은
nextLine().charAt(0)으로 해야 된다.