BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
특징
장점
- 속도가 빠르고 대용량 입력 처리에 유리함
→ 알고리즘 문제 풀이할 때 자주 사용됨
단점
Scanner
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
String str = sc.nextLine(); // or sc.next()
특징
- 입력 타입별로 메서드가 다양함 (nextInt(), nextDouble(), nextLine() 등)
- 입력 속도가 느림 (버퍼 사용 안 함 or 적게 사용함)
- Java 5부터 도입된 편리한 입력 클래스
장점
- 간편하고 가독성 좋음
- 형 변환 필요 없이 입력 타입대로 받을 수 있음
단점
- 속도가 느려서 입력이 많은 경우엔 비효율적
- next() vs nextLine() 혼동해서 실수하는 경우 많음
비교 요약
| |
BufferedReader |
Scanner |
| 속도 |
빠름 |
느림 |
| 입력 방식 |
문자열 줄 단위 (readLine()) |
다양한 타입별 메서드 (nextInt(), nextLine()) |
| 형변환 |
수동 |
자동 |
| 사용 용도 |
대용량 입력, 알고리즘 |
간단한 입력, 교육용 |
| 에러 처리 |
예외 처리 필요 (IOException) |
예외 처리 덜 필요 |