[JAVA] Scanner vs BufferedReader

2025. 11. 6. 10:10·TIL
반응형

코딩테스트를 java로 하다 생긴 의문점

Scanner말고 BufferedReader를 사용하는 이유가 뭘까?

단순하게 속도가 빠르다는 것말고 차이점이 무엇인지 알아보기 위해서 찾아봄

 

1. BufferedReader를 사용하는 이유

단순하게. BufferedReader가 Scanner보다 훨씬 빠름

  • BufferedReader가 내부적으로 버퍼를 사용해서 한 번에 많은 양의 데이터를 읽기 때문
    • 추가적으로 StringTokenizer를 통해 공백 기준으로 나눠줘야 함
    • Scanner는 내부적으로 정규식을 사용하여 파싱하기에 상대적으로 느림
  • 입력이 많을수록 Scanner와 BufferedReader 간의 성능 차이 커짐

 

2. Scanner vs BufferedReader

항목ScannerBufferedReader + StringTokenizer

 

3. 간단한 입력에서는 뭐가 더 나을까?

Scanner와 BufferedReader 모두 적합함!

- Scanner의 경우 사용이 간편하고 직관적임, 작은 양의 데이터를 다룰 때 편리

- 하지만, 대규모 데이터가 입력이 된다면 시간초과를 방지하기 위해 BufferedReader 사용 추천

 

4. Scanner와 BufferedReader의 간단 예시

- 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("Hello, " + name + "! You are " + age + " years old.");

        scanner.close();
    }
}

 

- BufferedReader

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 {
            System.out.print("Enter your name: ");
            String name = reader.readLine();

            System.out.print("Enter your age: ");
            int age = Integer.parseInt(reader.readLine());

            System.out.println("Hello, " + name + "! You are " + age + " years old.");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
반응형

'TIL' 카테고리의 다른 글

Redis가 싱글 스레드로 만들어진 이유  (0) 2026.02.12
데이터베이스 인덱스  (0) 2025.11.10
Entity Manager 엔티티 매니저  (0) 2025.11.04
분산 트랜잭션에서 일관성을 보장하는 방법  (0) 2025.09.29
최종적 일관성  (0) 2025.09.26
'TIL' 카테고리의 다른 글
  • Redis가 싱글 스레드로 만들어진 이유
  • 데이터베이스 인덱스
  • Entity Manager 엔티티 매니저
  • 분산 트랜잭션에서 일관성을 보장하는 방법
시시응
시시응
시시응 블로그
  • 시시응
    시시응응
    시시응
  • 전체
    오늘
    어제
    • 분류 전체보기 (139)
      • KT AIVLE (31)
      • 구름 PROFECT- 클라우드엔지니어 (2)
      • 대외활동 (32)
        • 사회리더 대학생 멘토링 (0)
        • 22 하반기 코드클럽 (7)
        • 23 상반기 코드클럽 (9)
        • 1784 스쿨혁명 (15)
        • 멋쟁이 사자처럼 (1)
      • 프로젝트 (3)
        • 캡스톤 (3)
      • study (1)
        • 데이터분석 (1)
      • 코딩테스트 (52)
        • 프로그래머스 (32)
        • 백준 (17)
        • 알고리즘 (2)
        • 자료구조 (1)
      • IT (7)
        • Backend (2)
        • CS (0)
        • Git (3)
        • 개발환경 (2)
      • TIL (11)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    코드클럽
    KT
    대학생
    codeclub_south_korea
    코딩테스트
    대외활동
    Python
    1784스쿨혁명
    KT에이블스쿨
    코드클럽한국위원회
    Lv1
    네이버커넥트재단
    파이썬
    코테
    프로그래머스
    에이블스쿨
    AIVLE
    소프트웨어야놀자
    교육봉사
    playsw_mentor
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
시시응
[JAVA] Scanner vs BufferedReader
상단으로

티스토리툴바