Java

[Java] Scanner vs BufferedReader, StringTokenizer

블로그 주인장 2023. 8. 16.

🎁 Scanner vs BufferedReader

자바에서 입력 클래스는 대표적으로 Scanner를 쓰는 것을 많이 봤을 것이다.

Scanner를 쓰는 것보다 BufferedReader를 사용하면 속도가 빨라진다.

BufferedReader는 문자열에 최적화가 되어 있지만,

Scanner의 경우는 다양한 기능을 지원하기 때문에 BufferedReader보다 무겁다.

ex) Scanner 예시

import java.util.Scanner;

Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt();		//정수형
String str = scanner.nextLine();	//문자열

ex) BufferedReader 예시

import java.io.*;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());		//정수형 반환
String str = br.readLine();				//문자열 반환

🎁 String.split() vs StringTokenizer.nextToken

  • StringTokenizer는 공백이 있다면 문자열이 공백을 없애고 그 자리를 차지한다.
  • Split()을 사용할 땐, 정규식 기반으로 자르는 로직이기에 복잡하지만, StringTokenizer.nextToken()은 단순히 공백 자리를 없애고 채우기 때문에 nextToken()이 효율적이다.
  • 정규식이나 인덱스 접근 같은 처리가 없다면 StringTokenizer를 사용하는 것이 효율적이다.

🎁 StringTokenizer 사용 방법

  • StringTokenizer는 String을 Token 단위로 끊어주는 클래스이다.
  • ex) "i am korean" 이라는 문자열을 받으면 "i", "am", "korean" 3개의 문자열로 끊어주는 기능을 제공한다.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
StringTokenizer st = new StringTokenizer(br.readLine());

// i am korean 입력

st.nextToken() // i
st.nextToken() // am
st.nextToken() // korean

🎁 참고 링크

https://joont92.github.io/java/Scanner-BufferedReader-StringTokenizer/

https://wkimdev.github.io/java/2018/04/06/java-io-bufferedreader/

반응형

'Java' 카테고리의 다른 글

[Java] Iterator 개념부터 사용 방법 뿌시기!!  (0) 2023.08.21
[Java] 람다식과 스트림  (0) 2023.08.10
[Java] 내부 클래스  (0) 2023.08.09

댓글