Scanner/BufferedReader

mynoseis3·2024년 7월 17일

Java

목록 보기
1/3
post-thumbnail

스캐너를 사용해서 입력을 받는 형태로 백준을 풀다가
다른 팀원분들이 BufferedReader를 주로 쓰시길래
결과를 확인해보니 스캐너가 확실히 속도가 느리게 측정되고 있었다.

이 클래스들의 차이점을 알고 사용하면 좋을 것 같음
간단히 정리해보자 !

Scanner

자바에서 입력을 쉽게 받기 위해 제공되는 클래스

  • 문자열, 정수, 실수 등 다양한 타입의 입력을 쉽게 처리
  • 입력 분석 기능 제공
    ex ) 공백이나 특정 패턴을 기준으로 입력을 분할 가능함
  • 상대적으로 느림
    특히 많은 양의 데이터를 처리할 때 성능이 떨어질 수 있다.

Scanner 사용 형태

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Enter your name: ");
        String name = scanner.nextLine();
        System.out.print("Enter your age: ");
        int age = scanner.nextInt();
        System.out.println("Name: " + name + ", Age: " + age);
        scanner.close();
    }
}

BufferedReader

입력을 더 빠르게 처리하기 위해 사용되는 클래스

  • 대용량 데이터를 처리할 때 유리
  • 입력이 문자열 형태로만 처리됨
    입력된 데이터를 정수나 실수로 변환하려면 추가 작업 필요
  • 입력을 처리하기 위해 InputStreamReader와 함께 사용됨
    입력을 분석하는 추가 작업 필요

BufferedReader 사용 형태

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class BufferedReaderExample {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter your name: ");
        String name = br.readLine();
        System.out.print("Enter your age: ");
        int age = Integer.parseInt(br.readLine());
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

차이점 요약

  • 사용 용이성: Scanner가 더 간단하고 사용하기 쉬움.
  • 성능: BufferedReader가 대용량 데이터를 처리할 때 더 빠름.
  • 입력 타입: Scanner는 다양한 타입의 입력을 바로 처리 가능, BufferedReader는 문자열로만 입력을 받음.
  • 입력 분석: Scanner는 입력을 공백이나 패턴을 기준으로 분할할 수 있는 기능이 내장되어 있음.

선택 기준

간단한 프로그램이나 입문 단계에서는 Scanner를 사용하는 것이 좋다.

성능이 중요한 프로그램이나 대용량 데이터를 처리해야 하는 경우 BufferedReader를 사용하는 것이 적합할 수 있다.

https://velog.io/@langoustine/Scanner-VS-BufferedReader
https://dlee0129.tistory.com/238

profile
웹개발자 꿈나무 꾸준함의 힘을 믿습니다 🚶

0개의 댓글