[Java] Scanner와 BufferedReader

2024. 1. 4. 21:41·Backend/Java

1. Scanner 클래스:

  • Scanner 클래스는 간단한 텍스트 스캐닝을 위한 메소드를 제공
    이 클래스는 공백을 기본 구분자로 사용하여 입력된 토큰을 분리
  • Scanner 클래스는 다양한 데이터 타입을 처리할 수 있습니다. 예를 들어, nextInt(), nextDouble(), nextLong() 등의 메소드를 제공하여 특정 타입의 데이터를 직접 읽어들일 수 있습니다.
  • 하지만, Scanner 클래스는 내부적으로 정규 표현식을 사용하기 때문에, 대용량 데이터를 처리하는데는 비효율적일 수 있습니다.

2. BufferedReader 클래스:

  • BufferedReader 클래스는 문자 입력 스트림에서 문자를 버퍼링함으로써 문자, 배열, 라인을 효율적으로 읽을 수 있도록 합니다.
  • 이 클래스는 기본적으로 문자열 데이터만 읽을 수 있습니다. 따라서 숫자나 다른 데이터 타입을 읽기 위해서는 추가적인 작업이 필요합니다. 예를 들어, Integer.parseInt()나 Double.parseDouble() 같은 메소드를 사용하여 문자열을 다른 타입으로 변환해야 합니다.
  • BufferedReader 클래스는 큰 데이터를 처리하는데 더 효율적입니다. 왜냐하면 이 클래스는 내부 버퍼를 사용하여 한 번에 많은 양의 데이터를 읽어들일 수 있기 때문입니다.

두 클래스의 주요한 차이점은 다음과 같습니다.

  • 효율성: 대용량의 데이터를 처리할 때는 BufferedReader가, 작은 양의 데이터를 처리할 때는 Scanner가 더 효율적입니다.
  • 사용 용이성: Scanner는 다양한 타입의 입력을 처리하기 위한 메소드를 제공하므로 사용이 더 쉽습니다. 반면에, BufferedReader는 문자열 데이터만 읽을 수 있으며, 다른 타입으로 변환하려면 추가 작업이 필요합니다.
  • 동기화: BufferedReader는 동기화를 지원하기 때문에 다중 스레드 환경에서 안전하게 사용할 수 있습니다. 반면에, Scanner는 동기화를 지원하지 않아서 동시에 여러 스레드에서 사용할 경우 문제가 발생할 수 있습니다.

표로 정리

항목 Scanner BufferedReader
패키지 위치 java.util 패키지 java.io 패키지
주요 용도 원시 타입과 문자열 읽기 대량의 텍스트 데이터 읽기
장점 - 사용이 간편하다.
- 다양한 타입의 데이터를 처리할 수 있다.
- 정규식을 사용하여 입력을 처리할 수 있다.
- 대량의 데이터를 빠르게 읽을 수 있다.
- 버퍼 크기를 조절할 수 있어 메모리 관리에 유리하다.
단점 - BufferedReader에 비해 속도가 느리다.
- 큰 데이터를 처리하는데 더 많은 시간이 소요된다.
- Scanner에 비해 사용이 복잡하다.
- 원시 타입을 직접 읽을 수 없어 추가적인 코드가 필요하다.
- 예외 처리를 위해 try-catch 블록을 사용해야 한다.

같이 보면 좋은 글 : https://ysjun96.tistory.com/entry/Scanner-%ED%81%B4%EB%9E%98%EC%8A%A4-next-%EC%99%80-nextLine

반응형

'Backend > Java' 카테고리의 다른 글

[Java] Record 클래스 란?  (1) 2025.01.22
[Java] Scanner 클래스 next() 와 nextLine()  (0) 2024.01.02
[Java] 클래스, 추상클래스, 인터페이스  (0) 2024.01.02
[Java] 반복문 for문을 사용한 별 피라미드 찍기 ver.2  (2) 2024.01.02
[Java] 약수 알고리즘 최적화 하기  (0) 2024.01.02
'Backend/Java' 카테고리의 다른 글
  • [Java] Record 클래스 란?
  • [Java] Scanner 클래스 next() 와 nextLine()
  • [Java] 클래스, 추상클래스, 인터페이스
  • [Java] 반복문 for문을 사용한 별 피라미드 찍기 ver.2
JJuuuunn
JJuuuunn
  • JJuuuunn
    JJuuuunn
    JJuuuunn
  • 전체
    오늘
    어제
    • 분류 전체보기 (70)
      • Backend (7)
        • Java (7)
      • Frondend (48)
        • Vue.js (12)
        • JavaScript (21)
        • Css (1)
      • Infra (0)
      • Git (2)
      • CS (5)
        • DataBase (0)
        • Network (2)
        • OS (0)
        • Algorithm (0)
      • 리뷰 (5)
        • 강의 (1)
        • Books (4)
      • ETC (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    자바스크립트
    Java
    VUE
    axios
    렌더링
    Network
    Vue.js
    Watch
    javascript
    API
    깊은 감시
    HTML
    frontend
    혼공컴운
    이벤트
    KDT
    자바
    객체
    신세계i&c
    혼자 공부하는 컴퓨터구조+운영체제
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.1
JJuuuunn
[Java] Scanner와 BufferedReader
상단으로

티스토리툴바