sysout과 Scanner
sysout(= System.out.println() ) 같은 경우 출력하고 싶은 내용을 한 번에 모아두었다가 출력하면 큰 문제가 없지만 반복문 안에 넣어서 계속 부르게 된다면 큰 시간이 걸리게 된다.
Scanner 같은 경우는 입력받은 내용을 정규식에 맞는지 많은 검사를 하기 때문에 시간이 오래 걸리게 된다.
빠른 입력: BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine(); //String
int i = Integer.parseInt(br.readLine()); //Int
int j = br.read(); //Int 하나
br.close();
BufferedReader를 이용하면 Scanner보다 훨씬 빠르게 입력을 받을 수 있다.
BufferedReader를 이용할 때 자주 쓰는 방식이 한 줄 전체를 읽어오는 readLine( )이다.
주의할 점은 readLine( )은 String을 반환하기 때문에 다른 타입을 이용하고 싶다면 형 변환이 필요하다는 것이다.
int로 변환하기 위해서는 Integer.parseInt( )를 쓴다.
빠른 입력: BufferedReader의 데이터 가공
String s = "ab cd";
StringTokenizer st = new StringTokenizer(s);
String first = st.nextToken(); //ab
String second = st.nextToken(); //cd
s = "12 34";
st = new StringTokenizer(s);
int first1 = Integer.parseInt(st.nextToken()); //12
int second1 = Integer.parseInt(st.nextToken()); //34
s = "ab cd"
String array[] = s.split(" ");
// 0: ab 1: cd
BufferedReader를 이용하면 문장 전체를 가져오게 되므로 문장에서 내가 원하는 내용을 가공할 필요가 있다.
StringTokenizer의 nextToken( )을 이용하면 String의 값을 공백단위로 구분하여 넣을 수 있다.
String의 값을 공백단위로 구분하여 배열에 한 번에 넣으려면 split( )을 이용하면 된다.
빠른 출력: BufferedWriter
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "abcdefg";//출력할 문자열
bw.write(s);
bw.newLine(); //줄바꿈
bw.write(s+"\n");
bw.flush();//남아있는 데이터를 모두 출력
//출력
//abcdefg
//abcdefg
bw.close();//스트림을 닫음
BufferedWriter의 경우 출력할 내용을 한번에 버퍼에 잡아 놓았다가 flush( )를 통해 전체 출력하게 된다.
출력할 내용이 있을 경우 write( )를 통해 계속 버퍼에 추가한다.
References
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
코테에서 잘 쓰이는 내장함수 (0) | 2021.09.02 |
---|---|
JAVA 정규식 (0) | 2021.08.26 |