: 데이터를 보관하는 임시 메모리 영역
: 입, 출력 속도 향상
: 버퍼를 이용한 입력
: 버퍼를 이용한 출력
: 원래 외부 장치의 데이터 입, 출력은 시간이 걸리는 작업이다.
키보드가 눌릴 때마다 입력한 문자 정보를 이동시키는 것 보다 중간에 버퍼를 두어 데이터를 묶어서 이동하는 것이 효율적이고 빠르다.
ex) 쓰레기가 생길 때마다 가서 버리는 것 보다 쓰레기통에 모았다가 한번에 버리는 것이 더 효율적
: Scanner는 Space, Enter를 모두 경계로 인식해줘 입력받은 데이터를 사용하기에 편하다.
(실제로 알고리즘 문제 풀다보면 .split안해도 걍 알아서 공백을 인식해 값을 찹찹 넣어줌)
하지만, BufferReader은 Enter만 경계로 인식하고 입력 데이터도 String으로 고정되기 때문에 가공하는 작업이 많이 필요하다.
하지만, 많은 양의 데이터를 입력 받을 경우 BufferReader로 입력받는 것이 더 효율적이다.
BufferedReader은 선언 후, readLine() 메소드를 이용해 데이터를 라인단위로 읽어오기
readLine()의 리턴 값은 String이라 다른 타입으로 입력 받으려면 형 변환이 필요하다!
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//문자
String str = br.readLine();
//숫자
int num = Integer.parseInt(br.readLine());
public class Main{
public static void main(String[] args) throws IOException{
}
}
public class Main{
public static void main(String[] args) {
try{
}
catch (IOException e){
e.printStackTrace();
System.out.println(e.getMessage());
}
}
}
Read한 데이터는 Line단위로 이뤄져 공백 단위로 데이터를 가공하려면 따로 또 작업을 해줘야함
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int num1 = Integer.parseInt(st.nextToken());
int num2 = Integer.parseInt(st.nextToken());
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
String [] arr = str.split(" ");
: System.out.println처럼 데이터를 출력하는 함수
많은 양을 출력할 때 Buffer를 활용하기 때문에 효율적이다.
버퍼 공간을 잡아 놓았기 때문에 반드시 flush();를 통해 남은 데이터를 다 출력하고
close()를 통해 스트림을 닫아야한다.
println처럼 자동 개행이 없어 개행을 하려면 \n을 작성해야함
BufferWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = "hello";
bw.write(str + "\n"); // 출력
bw.flush();
bw.close();
: 너무 어려워요