scanner와 BufferedReader
- 이둘의 가장 큰 차이점은 바로 속도이다!!!
백준알고리즘을 풀다가 scanner를 사용하니 실행시간이 너무 오래걸리거나 시간초과가 나오는 상황이 있다. 이때 BufferedReader를 사용하게 되면 buffer를 사용하기때문에 시간을 단축할 수 있다.
- Scanner 사용법
import java.util.Scanner;
public class Input {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
}
}
- BufferedReader 사용법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Input {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
}
}
BufferedReader를 사용할때에는 throws IOException을 사용하여 여러가지 입출력에 대한 예외처리를 해줘야한다. but Scanner는 system.in 입력시 내부에서 처리하므로 사용x, print,println과 같이 자주사용되는 것도 내부에서 자동으로 처리
위그림처럼 BufferedReader는 buffer를 사용하여 buffer에서 한번에 보내기 때문에 빠르고 scanner는 입력이 바로전달되어 입력을 읽는 과정에서 내부 regular expression, 파싱등의 과정을 거치므로 속도가 늦어지게 되는것이다.