각각 Scanner와 System.out.println();과 유사
버퍼를 사용하지 않는 입력 (Scanner)
: 키보드의 입력이 키를 누르는 즉시 전달
버퍼를 사용하는 입력 (BufferedReader)
: 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송,
버퍼가 가득 차거나 개행문자가 나타날 시 버퍼의 내용을 한번에 프로그램에 전달
키보드의 입력이 있을 때마다 바로 이동시키는 것 보다,
중간에 버퍼를 두어 한번에 묶어 보내는 것이 더 효율적이고 빠름
초기설정
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
BufferedReader (Line단위로 나뉨)
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
String s=bf.readLine(); //String
int i=Integer.parseInt(bf.readLine()); //int(반드시 형변환 필요)
예외처리 필수(throw 이용)
import java.io.IOException;
public static void main(String [] args) throws IOException{
}
Read한 데이터 공백단위로 가공하는 법
import java.util.StringTokenizer;
StringTokenizer st=new StringTokenizer(s); //StringTokenizer 인자값에 입력 문자열 넣음
int a=Integer.parseInt(st.nextToken()); //첫번째 호출
int b=Integer.parseInt(st.nextToken()); //두번째 호출
String array[]=s.split(" "); //공백마다 데이터 끊어서 배열에 넣음
BufferedWriter
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
String s="abcdefg"; //출력할 문자열
bw.write(s+"\\n"); //버퍼에 있는 값 모두 출력 (자동개행기능 x)
bw.flush(); //남아있는 데이터 모두 출력
bw.close(); //스트림 닫음
예시문제 (백준 15552)