728x90
반응형
백준, 정올, 프로그래머스 등 다양한 사이트에서 알고리즘 문제를 풀다 보면 입력값을 토대로 결과값을 도출해내는 게 거의 대다수를 차지한다는 것을 알고 계실 것이라 생각합니다. 그렇다면 혹시 여러분들은 입력 받으실 때, scanner를 많이 쓰시나요, 아니면 bufferedReader를 많이 쓰시나요? 이런 것도 사용하실 때 각각의 특징, 차이점과 유용성을 알아야 된다고 생각하여 이번 글에서 설명해보도록 하겠습니다.
BufferedReader이란?
- 문자 입력 스트림에 버퍼링 기능을 제공하는 클래스.
- 입력 소스로부터 데이터를 효율적으로 읽어오기 위해 사용.
- 주로 파일, 네트워크 연결 등의 입력 소스에서 데이터를 읽어올 때 유용하게 사용됨.
BufferedReader의 주요 특징?
- 버퍼링을 통해 효율적으로 읽어올 수 있음.
- read() 메서드를 통해 한 문자씩 읽거나, readLine() 메서드를 통해 한 줄씩 읽을 수 있음.
- 데이터를 읽어오는 동안 IO 작업이 발생하므로, 성능이 중요한 시나리오에서 유리함.
BufferedReader 사용 예시
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
System.out.println(n);
}
}
Scanner란?
- 입력 스트림에서 파싱 작업을 수행하며 원시 타입 데이터 및 문자열을 읽어오는 데 사용되는 클래스.
- BufferedReader보다는 덜 효율적이지만, 간단한 데이터 파싱 및 특정 데이터 타입의 입력 처리에 유용.
Scanner의 주요 특징?
- 공백이나 구분자를 기준으로 데이터를 토큰(token) 단위로 분리하여 읽어올 수 있음.
- 다양한 타입의 데이터를 입력 받을 수 있음. ex) nextInt(), nextDouble(), nextLine() etc
- BufferedReader에 비해 사용하기 간편하며, 간단한 데이터 파싱에 유리함.
Scanner 사용 예시
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(n);
}
}
차이점
- 버퍼링 : BufferedReader은 데이터를 읽을 때 버퍼를 사용하여 효율적으로 처리할 수 있지만, Scanner는 내부적으로 버퍼를 사용하지 않음.
- 파싱 기능 : Scanner는 입력 데이터를 통해 특정 타입으로 읽을 수 있는 메소드를 제공하며, 데이터 형식을 쉽게 변활할 수 있음. 반면 BufferedReader은 데이터를 문자열로 읽어오고, 필요에 따라 직접 변화해야 함.
- 사용 용도 : BufferedReader은 성능이 중요한 대용향 데이터 처리 시나리오에서 유리함. Scanner은 입력 데이터를 간단히 파싱하고 특정 데이터 타입으로 변환할 때 유용함.
이렇게 둘은 다양한 차이점이 존재하는 것을 알 수 있었습니다. 그러므로 당연히 상황에 따라 scanner 혹은 bufferedReader를 적절히 사용해야하지만, 데이터의 양이 많거나 많은 트래픽을 요구하는 과정에서는 bufferedReader를 사용하는 것이 효율적일 것이라고 보입니다.
https://github.com/bottomsUp-99
728x90
반응형
'Java Study' 카테고리의 다른 글
메서드 오버로딩(Method Overloading)이란? (0) | 2024.06.20 |
---|---|
메서드(method)란? (0) | 2024.06.20 |
Integer VS int 의 차이 (0) | 2024.06.18 |
Java 조건문과 반복문 (0) | 2024.06.18 |
Maven 과 Gradle의 차이 (2) | 2024.06.17 |