Programming Language/Java

[Java] Scanner와 BufferedReader

Ma_Sand 2022. 10. 22. 19:46
반응형

 

Scanner

   : 입력받을 때 정수값과 소수값, 문자데이터를 구분지어 읽어들인다.

 

  - 장점: 직관적이며 사용하기 편리하다.

  - 단점: 키보드의 키를 입력하는 즉시 바로 전달되어 BuffredReader보다 속도가 느리다.

 

 

BufferedReader

   : 입력받을 때 그 값을 8,192 char(16,384 byte) 크기의 버퍼에 담아놓았다가 한번에 전달한다.

 

  - 개행문자만 경계로 인식하고, 입력된 데이터의 형식은 String으로 고정되므로 데이터를 따로 가공해야 한다.

    cf. Scanner: 띄어쓰기와 개행문자를 기준으로 입력값을 인식하므로 데이터를 따로 가공할 필요 없다.

 

  - BufferedReader를 사용할 땐 무조건 예외 처리를 해야 한다. (try ~ catch문 또는 throws IOException)

  - 입력받기 위해 readLine()을 사용한다.

  - 데이터가 문자값으로 받아지므로 숫자값을 받을 땐 형변환을 해야 한다.

  

 

많은 양의 데이터를 입력받을 때

   : split이나 StringTokenizer를 사용하면 된다.

 

  - split: 입력을 받는 동시에 배열로 데이터를 받아온다.

              정규식을 기반으로 문자열을 자른다.

  - StringTokenizer: 입력받을 때 Token화된 문자열을 다시 처리해야 한다.

                                 공백인 부분들은 당겨서 채운다. (split보다 빠름)

  - StringTokenizer 생성자에서 구분자를 작성하지 않았을 때에 데이터는 띄어쓰기로 구분된다.

  - 구분자를 사용하려면 StringTokenizer st = new StringTokenizer(문자열, 구분자);

  - countTokens(): 배열을 생성하면서 크기를 정할 때 사용하며, 총 token 수를 리턴받는다.

  - hasMoreTokens(): token이 더이상 없을 때 false를 리턴한다.

반응형