728x90
- 자바로 알고리즘 풀다가 매번 입력받는 형식을 Scanner 복붙으로 하다, BufferedReader 로 받는 방식이 보여 찾아봄.
- Scanner 방식
import java.util.Scanner;
public class Sc {
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 Bf {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
}
}
- 속도는 BufferedReader 가 빠름.
- 왜 속도 차이가 날까
- Scanner 는 토큰 파서라는 기능을 가지고 있어, 문자열을 토큰으로 분리 하는 과정에서 시간이 좀 더 소요
- Scanner 는 입력받은 값이 "a b c" 를 "a""b""c"처럼 인식
- 1KB 버퍼의 크기를 사용
- BufferedReader 는 입력을 받은 문자열을 통째로 읽어들임
- 8KB 버퍼의 크기를 사용
- Scanner 는 토큰 파서라는 기능을 가지고 있어, 문자열을 토큰으로 분리 하는 과정에서 시간이 좀 더 소요
- 양질의 블로그 발견: https://dlee0129.tistory.com/238
자바(JAVA) - Scanner & BufferedReader
자바(JAVA) - Scanner & BufferedReader 자바를 처음 배울 때 사용자(키보드) 입력받기 위해 보통 Scanner 클래스를 사용합니다. 하지만 알고리즘을 풀기 시작하면서 백준에서 Scanner를 사용하여 입력을 받으
dlee0129.tistory.com
읽다보니 stream 에 대해도 한번 정리해야할 필요를 느낌.
728x90
'Language > 자바' 카테고리의 다른 글
자바 cpu 개수 구하기 (0) | 2023.01.28 |
---|---|
StringTokenizer, split 차이점[공유링크] (0) | 2023.01.23 |
enumMap, enumSet 에 대해 간략히 알아보자. (0) | 2023.01.19 |
[JAVA] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점 (0) | 2021.08.25 |
JRE, JVM, JDK 에 대해 간략히 알아보자. (0) | 2021.08.25 |
댓글