본문 바로가기
IT개발/JAVA

Scanner & BufferedReader 차이

by 시간기억자 2025. 2. 6.
반응형

(뤼튼을 통해 정리된 내용입니다.)

 

자바에서 Scanner와 BufferedReader는 모두 입력을 받을 때 사용되는 클래스지만, 각각의 특징과 사용 용도가 다릅니다. 

 

1. Scanner

특징

  • 사용 용이성: Scanner는 다양한 데이터 타입(정수, 실수, 문자열 등)을 쉽게 읽을 수 있는 메서드를 제공합니다. 
    nextInt(), nextDouble(), nextLine() 등으로 구분된 입력을 쉽게 처리할 수 있습니다.
  • 자동 공백 처리: 입력에서 공백이나 줄바꿈을 자동으로 처리하여, 입력을 보다 간편하게 할 수 있습니다.
  • 느린 성능: Scanner는 내부적으로 InputStream을 사용하여 데이터를 읽기 때문에, BufferedReader에 비해 상대적으로 느립니다.

사용 예시

import java.util.Scanner;

public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        Systehttp://m.out.print("Enter an integer: ");
        int num = scanner.nextInt();
        System.out.println("You entered: " + num);
        
        Systehttp://m.out.print("Enter a string: ");
        String str = scanner.next();
        System.out.println("You entered: " + str);
        
        scanner.close();
    }

}

 

2. BufferedReader

특징

  • 고속 입력 처리: BufferedReader는 입력을 버퍼링하여, 여러 줄의 데이터를 한 번에 읽을 수 있기 때문에 대량의 데이터를 처리할 때 빠릅니다.
  • 문자 단위 읽기: readLine() 메서드를 사용하여 한 줄 전체를 읽을 수 있으며, 필요에 따라 문자 단위로도 읽을 수 있습니다.
  • 데이터 타입 변환 필요: BufferedReader는 기본적으로 문자열을 읽기 때문에, 다른 데이터 타입으로 변환하려면 
    Integer.parseInt(), Double.parseDouble() 등의 메서드를 사용해야 합니다.

사용 예시

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

public class BufferedReaderExample {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        
        try {
            Systehttp://m.out.print("Enter an integer: ");
            int num = Integer.parseInt(reader.readLine());
            System.out.println("You entered: " + num);
            
            Systehttp://m.out.print("Enter a string: ");
            String str = reader.readLine();
            System.out.println("You entered: " + str);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3. 사용 용도

Scanner:

  • 입력이 적고, 다양한 데이터 타입을 쉽게 처리해야 할 때 사용합니다.
  • 사용자와의 상호작용이 많은 콘솔 프로그램에서 자주 사용됩니다.

BufferedReader:

  • 대량의 데이터를 처리하거나, 파일에서 데이터를 읽어올 때 주로 사용합니다.
  • 성능이 중요한 경우, 특히 입력 속도가 중요한 대회 프로그래밍이나 대량의 텍스트 처리에 적합합니다.

 

결론

Scanner는 편리하지만, 성능이 느리며, 간단한 입력 처리에 적합합니다.

BufferedReader는 성능이 뛰어나고 대량의 입력을 효율적으로 처리할 수 있지만, 문자열을 읽은 후 타입 변환이 필요합니다.

반응형

댓글