반응형
(뤼튼을 통해 정리된 내용입니다.)
자바에서 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는 성능이 뛰어나고 대량의 입력을 효율적으로 처리할 수 있지만, 문자열을 읽은 후 타입 변환이 필요합니다.
반응형
'IT개발 > JAVA' 카테고리의 다른 글
[Java] Stack과 Queue: 기본 개념, 주요 차이점 및 활용 사례 (0) | 2025.03.05 |
---|---|
Java의 Optional: Null 안전한 프로그래밍(Java8) (0) | 2025.02.27 |
자바 MVC Model 2(백엔드개발/Java/backend/서블릿/JSP) (1) | 2024.11.27 |
RESTful API란?(java/백엔드개발) (0) | 2024.11.23 |
AJAX(Asynchronous JavaScript and XML)란? (0) | 2024.11.21 |
댓글