본문 바로가기
공부한 거/Java

[Java] BufferedReader,StringBuilder

by freakFlow 2023. 9. 22.

기존의 입출력 방식

입력에는 java.util.Scanner를 사용하고,

출력에는 System.out.print를 사용했다.

 

Scanner

regular expression을 사용해서 primitive type과 String으로 파싱해준다.

delimiter pattern을 사용해서 input을 토큰화시키는데 디폴트는 whitespace다.

 

BufferedReader

character-input stream으로부터 text를 읽어 character를 버퍼에 저장하기 때문에 효율적인 읽기를 제공한다.기본버퍼사이즈가 8192 char인 것에 반해 Scanner는 1024 char으로 고정되어 있다.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String string = br.readLine();

StringTokenizer

BufferedReader는 Scanner와 다르게 토큰화를 지원하지 않기 때문에 토큰화를 위해 사용되는 클래스이다.

Delimiter character를 기준으로 String을 토큰화시키는데 디폴트는 " \t\n\r\f"이다.

StringTokenizer st = new StringTokenizer("this is a test");
while (st.hasMoreTokens()) {
  System.out.println(st.nextToken());
}

StringBuilder

StringBuffer와의 차이점은 synchronization을 보장해주지 않는다는 점이다.

그렇기 때문에 single thread일 때 StringBuffer의 대체제로 고안된 클래스이다.

대부분의 구현에서 StringBuffer보다 빠르므로 StringBuilder를 권장한다.

String과는 달리 객체를 재생성하지 않고 수정해서 사용한다.

StringBuilder sb = new StringBuilder("hi");
sb.append(" ").append("test");
System.out.print(sb);

 

'공부한 거 > Java' 카테고리의 다른 글

[Java] 향상된 for문  (0) 2024.02.05
[Java] String.substring  (0) 2023.11.04