100세까지 코딩
[자바 공부] BufferedReader vs Scanner 본문
한눈에 정리
BufferedReader | Scanner | |
버퍼 사이즈(byte) | 8192 | 1024 |
데이터 파싱 | String으로 단순히 읽음 | 원하는 타입으로 파싱 |
예외 처리 | IOException 던짐 | IOException 숨김 |
Syncronized | O | X |
속도 | 빠름 | 느림 |

1) Scanner
- 공백 및 개행을 기준으로 읽는다.
- 원하는 타입으로 파싱 해서 읽을 수 있다.
- 버퍼의 사이즈가 1024byte(1KB)이다.
- 예외 처리를 명시할 필요가 없다.
- 동기화를 지원하지 않아서 멀티스레드 환경에서 문제가 발생할 수 있다.
- 데이터를 입력받는 즉시, 사용자에게 전송되기 때문에 많은 시간이 소요된다.
1-1) 사용법
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
2) BufferedReader
- 개행을 기준으로 읽는다.
- 데이터 파싱을 하지 않고 String으로 읽어온다.
- 버퍼의 사이즈가 8192byte(8KB)이다.
- 반드시 예외 처리를 해줘야 한다.
- 동기화를 지원하여 멀티스레드 환경에서 안전하다.
- 버퍼가 가득 차거나 개행문자가 나타나면 한 번에 전달하기 때문에 시간 절약이 된다.
2-2) 사용법
BufferedReader bf =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
참고
1) InputStreamReader()
- byte 대신 char 형태로 읽을 수 있다. 아스키코드가 아닌 문자열로 출력이 가능하다.
2) StringTokenizer()
- 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스.
[자바 공부] StringTokenizer
StringTokenizer 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스 주요 메서드 countTokens() 현재 남아있는 token 개수 hasMoreTokens() 남아있는 토큰이 있으면 true, 없으면 false nextToken() 객체에
sjd0219.tistory.com
Scanner와 BufferedReader를 같이 쓸 경우, 오류가 발생할 때도 있으니 하나만 쓰자.
코테는 BufferedReader 쓰기!!
'JAVA' 카테고리의 다른 글
[자바 공부] StringTokenizer (0) | 2023.09.21 |
---|---|
[자바 공부] 컬렉션(5) Map (0) | 2023.09.15 |
[자바 공부] 컬렉션(4) Stack & Queue (0) | 2023.09.15 |
[자바 공부] 컬렉션(3) List (0) | 2023.09.14 |
[자바 공부] 컬렉션(2) Set (0) | 2023.09.12 |