자바(JAVA) BufferedReader, BufferedWriter, StringTokenizer, StringBuilder

개발개발·2023년 6월 12일

백준자바

목록 보기
6/8

BufferedReader

알고리즘 문제를 풀다보니 대부분의 사람들이 bufferedreader, bufferedwriter을 쓰는 걸 발견했다.

나는 이걸 처음 보기 때문에 자세하게 정리해보고자 한다.

우선, 말 그대로 버퍼를 사용하여 읽기/쓰기를 하는 함수이다.

버퍼를 사용하지 않으면, 키를 누르는 즉시 바로 프로그램에 전달되고
버퍼를 사용하면, 키를 누르면 한 문자씩 버퍼로 전송한다. 버퍼가 가득 차거나 혹은 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램에 전달한다.

하드디스크와 입출력 장치의 속도가 느리기 때문에 버퍼를 사용하는 것이 훨씬 효율적이다.

예를 들면, 쓰레기가 생길 때마다 쓰레기 장에 내다 버리는 것보다 한 번에 모아 버리는 것이 더 효율적인 것처럼 말이다.

bufferedreader은 입력 받은 데이터 형태가 string이다.
그래서 형 변환이 필요하며, 많은 입력이 필요할 경우에는 좋지 못한 성능을 불러온다.

입력 받을 데이터가 많지 않은 경우에는 scanner보다 훨~씬 빠르다

import java.io.BufferedReader;
import java.io.InputStreamReader;

import 후 선언

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(br.readLine());

정수 타입을 입력받기 위해서는 string 타입으로 입력 받은 후 parseInt로 형 변환을 해주면 된다.

StringTokenizer

BufferedReader는 한 줄 씩 읽어오게 된다. 공백 단위로 분리하기 위해서는 StringTokenizer을 사용해준다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());

BufferedWriter

System.out.println(""); 대신 사용할 수 있다.

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String s = "abcdef"  
bw.write(s); //출력
bw.newLine(); //줄바꿈
bw.flush(); //남아있는 데이터 모두 출력
bw.close();

StringBuilder

String은 불변 속성, StringBuilder은 가변 속성

문자열에 변경이 자주 일어날 경우, StringBuilder가 유리하다.

StringBuilder sb = new StringBuilder();
sb.append("a");
sb.append("b").append(" ");
  • StringBuilder 주요 메소드
    º append(String s) : 값을 붙임
    º delete(int start, int end) : start인덱스부터 end-1 인덱스까지 삭제
    그 외에 .. insert, replace, reverse, IndexOf, subString 도 있다

<참고> 여기 정리가 정말 잘 되어 있다..

https://rlakuku-program.tistory.com/33

0개의 댓글