-
Scanner vs BufferedReaderJava 2018. 8. 9. 00:51반응형
자바를 입력하는데 Scanner 와 BufferedReader 를 사용하는데...
이 둘의 차이를 정확히 자세히 모르겠당..
그래서 정리!!
1. Scanner : 정규 표현을 사용해 원시적 형태 및 라인을 구문 분석할 수 있는 간단한 텍스트 스캐너입니다.
1) java.util 패키지 내에 위치하고 있습니다.
123import java.util.Scanner;Scanner scanner = new Scanner(System.in);cs 2) 버퍼의 사이즈가 1024byte (1KB)입니다.
3) 데이터를 파싱해서 원하는 type으로 가져옵니다.
4) I/O Exception을 던지지 않습니다.
5) thread unsafe 합니다.
- 두 스레드에서 동일한 Scanner 인스턴스를 사용하는 경우 객체에 대한 액세스를 동기화하지 않으면 문제가 발생할 수 있습니다.
2. BufferedReader : 행을 효율적으로 읽을 수 있도록 문자를 버퍼링하여 문자 입력 스트림에서 텍스트를 읽습니다.
1) java.io 패키지 내에 위치하고 있습니다.
* InputStreamReader 는 문자 기반의 보조 스트림으로써 바이트 기반 스트림을 문자 기반 스트림으로 연결시켜 주는 역할을 합니다.
BufferedReader 와 System.in을 연결하기 위해 InputStreamReader를 사용하였습니다.
1234import java.io.BufferedReader;import java.io.InputStreamReader;BufferedReader br = new BufferedReader(new InputStreamReader(System.in));cs 2) 버퍼의 사이즈가 8192byte (8KB)입니다.
- 버퍼를 이용해서 입출력의 효율을 높일 수 있도록 합니다.
3) 데이터를 파싱하지 않은 채 가져옵니다.
- String 으로만 읽고 저장합니다.
4) I/O Exception을 던집니다.
- IOException을 throw 하거나 try/catch 해야합니다.
123456BufferedReader br = new BufferedReader(new InputStreamReader(System.in));try {String a = br.readLine();} catch (IOException e) {e.printStackTrace();}cs 5) thread safe 합니다.
3. 결론!!! Scanner 와 BufferedReader 의 차이점
1) Scanner 와 BufferedReader의 버퍼 사이즈가 각각 1KB, 8KB로 차이가 많이 납니다.
그렇기 때문에 많은 입력이 있다고 한다면 BufferedReader가 좋습니다.
실제로는 구문 분석 하려면 Scanner 사용하고, 구문을 한 줄씩 읽으려면 BufferedReader 사용한다고 합니다. ( * 주변 피셜.. )
2) BufferedReader는 String으로만 읽고 저장하지만 Scanner는 다른 타입으로 파싱할 수 있습니다.
3) Scanner 는 Thread-safe하지 않기때문에 동일한 인스턴스 변수를 가지고 멀티 쓰레드에 사용할 수 없습니다.
반응형'Java' 카테고리의 다른 글
String vs StringBuilder vs StringBuffer 이해하기!! (0) 2018.08.30 객체 직렬화(Serialization) / 역직렬화(DeSerialization)란?? (0) 2018.08.18 JDBC란 무엇일까? (0) 2018.08.01 Java SE 환경설정하는 방법 (0) 2018.07.29 자바의 예외(Exception)란 무엇일까? (0) 2018.07.26