Scanner
로 입력받는 것 보다 BufferedReader
로 입력 받는 것이 빠르고
System.out.println
으로 출력하는 것 보다 BufferedWriter
로 출력하는 것이 빠르다.
Scanner | BufferedReader |
---|---|
Space,Enter모두 경계로 인식 | Enter만 경계로 인식 |
입력받는 자료형 다양 | String으로 고정 |
데이터 가공작업 적음 | 데이터 가공작업 많음 |
많은 양의 데이터 입력 속도 느림 | 많은 양의 데이터 입력 속도 빠름 |
BufferedReader
사용법BufferedReader
를 사용하는데 필요한 것들을 아래코드처럼 import
해줘야하며 예외처리를 꼭 해줘야한다. try catch
문을 이용하여 해도 되지만 대개 throws IOException
을 통해 처리한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
//import 해줘야함
public static void main(String[] args) throws IOException {
//예외처리 꼭해줘야함. try catch이용해도되지만 대개 이방식 이용
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String s = bf.readLine();//문자열 입력 받을 때
int i = Integer.parseInt(bf.readLine());//정수 입력 받을 때
}
BufferedWriter
사용법버퍼를 사용하기 때문에 BufferedWriter
사용 후 flush()
,close()
를 반드시 호출하여 뒷처리를 해야한다. 개행시에는 \n
을 이용한다.
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
//import 해줘야함
public static void main(String[] args) throws IOException {
//예외처리 꼭해줘야함. try catch이용해도되지만 대개 이방식 이용
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "abcdefg";
bw.write(s+"\n");
bw.flush();
bw.close();
}
안녕하세요 좋은 글 덕분에 백준 문제를 풀 수 있었어요!
그런데 궁금한게 있는데 답변 가능할까요?
버퍼란 무엇이고 버퍼가 있다면 flush, close를 해줘야 하는 이유가 뭔가요?