반응형
이번에는 Scanner 클래스와 BufferedReader 클래스 차이을 알아보겠습니다.
둘의 공통점은 문자열을 입력 받는데 사용된다는 공통점이 있습니다.
구문 분석 하려면 Scanner 사용하고 구문을 한 줄씩 읽으려면 BufferedReader 사용한다는 이야기도 종종 들리더라고요
그럼 둘의 차이점은 무엇이냐?
1. Scanner
- 정규 표현을 사용해 원시적 형태 및 라인을 구문 분석 할 수 있는 간단한 텍스 스캐너 입니다.
- java.utill 패키지 내에 위치하고 있습니다.
- 버퍼의 사이즈가 1024byte 입니다
- I/O Exception을 던지지 않습니다.
import java.utill.Scanner;
public class Main{
public static void main(String[] aregs){
// Scanner Object sc 생성
Scanner sc = new Scanner(System.in);
// Scanner sc의 nextInt() 사용
int a = sc.nextInt();
//nextXXX() 뒤의 nextLine()사용을 위해 넣어줌
sc.nextLine();
String b = sc.nextLine();
System.out.println("a = " + a + ",b = " + b_;
}
}
2. BufferedReader
- 행을 효율적으로 읽을 수 있도록 문자를 버퍼링하여 문자 입력 스트림에서 텍스트를 읽습니다.
- java.io 패키지 내에 위치하고 있습니다.
- 버퍼의 사이즈가 8192bye 입니다.
(버퍼를 이용해서 입출력의 효울을 높일 수 있도록 합니다.)
- 데이터를 파싱하지 않은 채 가져옵니다.
( String 으로만 읽고 저장합니다.)
- I/O Exception을 던집니다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) {
// BufferedReader Object br 생성, System에서 입력한 값을 받음
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// BufferedWriter Object bw 생성, System에 보낼 값을 받음
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
try {
// 시스템에서 입력받은 값(br)을 bw로 보내시오
bw.write(br.readLine());
// br 닫기
br.close();
// bw에 쌓인 것 내보내기
bw.flush();
// bw 닫기
bw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Scanner |
BufferedReader |
정규 표현을 사용해 원시적 형태 및 라인을 구문 분석 할 수 있는 간단한 텍스 스캐너 입니다. | 행을 효율적으로 읽을 수 있도록 문자를 버퍼링하여 문자 입력 스트림에서 텍스트를 읽습니다. |
java.utill 패키지 내에 위치하고 있습니다. | java.io 패키지 내에 위치하고 있습니다. |
버퍼의 사이즈가 1024byte (!KB)입니다 | 버퍼의 사이즈가 8192bye (8KB)입니다. (버퍼를 이용해서 입출력의 효울을 높일 수 있도록 합니다.) |
I/O Exception을 던지지 않습니다. |
I/O Exception을 던집니다. |
데이터를 파싱 가능합니다 | 데이터를 파싱하지 않은 채 가져옵니다. ( String 으로만 읽고 저장합니다.) |
'Language > Java' 카테고리의 다른 글
프로세스와 스레드 차이점 (0) | 2021.06.30 |
---|---|
Statement와 PreparedStatement 차이 (0) | 2021.06.30 |
Eclipse spring 설치 (0) | 2021.06.02 |
Big-O 표기법 (0) | 2021.05.30 |
JPA와 JDBC 이 무엇일까 (0) | 2021.05.28 |