[Java] BufferedReader & StringBuilder

Boknami·2023년 8월 9일
0

Java

목록 보기
1/5

백준 문제 2751번을 푸는 과정 중 해당 내용에 대해 학습을 하게 되었다.
간단하게 받은 수를 정렬하는 문제인데, 시간 제한이 걸려 있어 효율적인 함수를 사용해야했다.

🔎 BufferedReader

장점

기본적으로는 Scanner와 유사하다.
허나 버퍼리더는 입력된 데이터가 바로 전달되지 않고 버퍼를 거쳐 전달되므로 데이터 처리 효율성이 올라간다

그러므로 많은 양의 데이터를 처리할 때 유리하고 알고리즘 문제를 풀 때는 보통 버퍼리더를 통해 값을 입력 받고 시작하는 것이 좋다.

단점

  • Enter만 경계로 인식
  • 받은 데이터가 String으로 고정되기 때문에 입력받은 데이터를 재가공하는 경우가 많다

예시

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String str = bf.readLine();
int num = Integer.parseInt(bf.readLine()); 

위에서 언급한 단점대로 받은 데이터가 string형태로 고정된다. 그렇기 때문에 int를 받는 경우는 받은 string형을 다시 변경할 필요가 있다.

🔎 StringBuilder

일반적으로 자바는 string자료형의 값 변경이 불가능하다.
이것이 가능한 것처럼 보일 수 있는데

string str = "Hi";
str += "Good";

이렇게 할 시에는 실제로 str을 찍어보면 HiGood이 나온다.
그렇다고 이것이 값이 변경된 것은 결코 아니다.
값이 변경된 것이 아니고, 재할당을 통해 값을 나오게 하는 것이다.
이러한 과정들은 메모리상 효율을 좋게 하지 않는다.

이 문제를 해결할 수 있는 것이 StringBuilder이다.

StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("A").append("B");

System.out.print(stringBuilder.toString());

0개의 댓글

관련 채용 정보