Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 신규 프로젝트 생성후 빌드시 오류
- 동등성
- 깃허브 프로필
- 깃허브 리드미 꾸미기
- 프라이탁 파이썬
- GitHub profile
- 윈도우10에 파이썬 설치
- hashcode
- 레디스
- Sanner와 BufferedReader의 차이점
- setting.xml
- 리드미 꾸미기
- Redisson
- 프라이탁 알림봇
- 프라이탁
- Visual Studio Code 파이썬
- 깃허브 뱃지
- 깃허브 리드미
- 분산락
- pip업그레이드
- 파이썬 pip
- 파이썬 설치하기
- spring-boot-starter-parent
- Redis
- 파이썬 설치
- 깃허브
- 깃허브 방문자
- maven 오류
- 알고리즘 입력받는 값
- visual studio code
Archives
- Today
- Total
yeo72.devlog
[Java]Scanner 와 BufferedReader의 차이 본문
두가지 모두 Java 에서 값을 입력 받는 데 사용되는 클래스이다
알고리즘을 풀기 위해서 입력받을 값을 사용할때 이 클래스들을 사용한다.
아래로는 두 클래스의 차이점과 어떤 클래스를 사용하는것이 유리할 지에 대하여 설명한다.
차이점 | scanner | BufferedReader |
입력받는 방식 | 공백, 개행등의 구분자 사용하여 값을 구분 | 한 줄씩 값을 구분 |
입력값의 형태 | 다양한 형태의 값(정수, 실수, 문자열 등등) | 문자열 |
성능 | 상대적으로 느림 | 빠름 |
import java.util.*;
public class Main {
public static void main(String[] args) {
//스캐너 객체를 생성
Scanner s = new Scanner(System.in)
//정수형 변수 입력받기
int num = s.nextInt();
//실수형 변수 입력받기
double dNmu = s.nextDouble();
//문자열 입력받기
String str = s.nextLine();
//입력 스트림 닫기
s.close()
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//변수 입력받기
String str = br.readLine();
// 정수형 변수 -> 문자열로 입력 받은 것을 형변환 해준다
int num = Integer.ParseInt(str);
//입력 스트림 닫기
br.close();
}
}
두가지 코드를 비교해 보면 Scanner 의 경우 값을 입력 받을때 형태에 대해서 다르게 입력을 받는 것을 볼 수 있다
반면에, BufferedReader는 문자열로 입력을 받고, 이를 적절한 형태로 형변환 하여 사용한다.
BufferedReader를 사용하는 이유
BufferedReader는 한 줄씩 입력받기 때문에 공백이나 개행 문자와 상관없이 원하는 형태로 값을 입력받을 수 있다.
반면 Scanner는 값을 입력받을때 공백이나 개행 문자로 구분해줘야 한다
Scanner는 값을 입력받아 읽어올때 형태에 따라 다르게 처리를 할 수 있다.
(위에 나온 예시처럼 정수, 실수, 문자열 등으로 변수의 형태를 지정)
이 때문에 정규식 처리 등의 추가적인 작업을 한다.
BufferedReader 는 문자열 형태로만 값을 읽어오기 때문에 처리 속도가 빠르다.
또한 메모리 사용량에도 차이가 나는데
Scanner 는 다양한 형태의 입력값을 처리하기 위해 입력값을 내부 버퍼에 저장하고,
BufferedReader는 입력값을 한 줄씩 읽어오기 때문에 내부버퍼를 사용하지 않는다
이러한 차이점으로 입력 값이 크거나 빠른 속도가 필요할 경우 BufferedReader 를 쓰는 것이 유리하다
'Study > Java' 카테고리의 다른 글
[JAVA] 상속과 포함관계 (0) | 2023.09.12 |
---|---|
[JAVA]JVM 동작원리 (0) | 2023.09.10 |
[Spring Cloud] Eureka server 와 Eureka Client 설정 - application yml (0) | 2023.03.14 |
[Java] valueOf() 함수와 toString() 함수의 차이 (0) | 2022.04.19 |
[Java] String.toCharArray() (0) | 2022.04.19 |