[알고리즘(Java)] Scanner vs BufferedReader

Dev_Sanizzang·2021년 9월 24일
0

알고리즘

목록 보기
2/5

✍ Scanner 🚶‍♂️

  • java.util.Scanner 클래스
  • 기본 유형과 문자열을 구문 분석 할 수 있는 간단한 텍스트 스캐너
  • 내부적으로 정규식을 사용하여 다른 유형을 읽기 기능
  • Java 프로그램에서 입력을 읽는 가장 쉬운 방법
  • 특정 데이터 유형을 읽기 위해 사용할 함수 [nextInt(), nextFloat(), nextByte(), nextShort(), nextDouble(), nextLong(), next()]
  • 문자열을 읽으려면 nextLine() 사용
  • 단일 문자를 읽으려면 next(), charAt(0)을 사용
  • next() 함수는 입력의 다음 토큰 / 단어를 문자열로 반환하고, charAt(0) 함수는 해당 문자열의 첫 번째 문자를 반환

✍ BufferedReader🏃

  • Java.io.BufferedReader 클래스
  • Buffer를 이용해 입출력의 효율을 높혀줌
  • 문자 입력 스트림으로, 텍스트를 읽고 문자를 버퍼링하여, 문자 시퀀스를 효율적으로 읽을 수 있도록 함 (line 단위의 입출력이 편리함)
  • 버퍼 크기를 지정하거나 기본 크기를 사용할 수 있으며, 기본값은 대부분의 목적에 충분히 큼
  • 일반적으로 Reader의 각 읽기 요청은 해당 읽기 요청이 기본 문자 또는 바이트 스트림으로 이루어 지도록 함
  • 따라서 FileReaders 밑 InputStreamReasders와 같이 read()작업에 비용이 많이들 수 있는 판독기 주위에 BufferedReader를 래핑하는 것이 좋음

생성자

  • BufferedReader(Reader in): 기본 크기의 입력 버퍼를 사용하는 버퍼링 문자 입력 스트림을 만듦
  • BufferedReader(Reader in, int sz): 지정된 크기의 입력 버퍼를 사용하는 버퍼링 문자 입력 스트림을 만듦

문자 입력 스트림

  • 입출력 단위가 2byte(JAVA에서는 문자를 의미하는 char형은 2byte) (cf. 바이트 기반 스트림: 입출력 단위가 1byte)
  • 문자기반 스트림은 여러 종류의 인코딩과 자바에서 사용하는 유니코드간의 변환을 자동적으로 처리해주기 떄문에 Reader는 특정 인코딩을 읽어서 유니코드로 변환하고, Writer는 유니코드를 특정 인코딩으로 변환하여 자동 저장(한글 깨짐 방지)

둘의 가장 큰 차이점은 속도!

⏩ 버퍼를 사용하지 않는 입력

<키보드> ====> <프로그램>
: 키보드의 입력이 키를 누르는 즉시 바로 전달됨

⏭ 버퍼를 사용하는 입력

<키보드> == [버퍼(Buffer)] ==> <프로그램>
: 1. 키보드의 입력이 있을 때 마다 한 문자씩 버퍼로 전송함
2. 버퍼가 가득 차거나, 개행문자가 나타나면, 버퍼의 내용을 한 번에 전송함

profile
기록을 통해 성장합니다.

0개의 댓글