관리 메뉴

100세까지 코딩

[자바 공부] BufferedReader vs Scanner 본문

JAVA

[자바 공부] BufferedReader vs Scanner

100세까지 코딩 2023. 9. 19. 19:24
한눈에 정리

 

  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