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 |