StringBuilder을 쓸 때 왜 toString()을 붙일까?

min·2024년 8월 19일
0

습관적으로 StringBuilder.toString()을 입력하다가 왜 toString()을 해야하지? 라는 의문점이 생겨서 찾아보게 되었다.

StringBuilder

  • Java에서 문자열을 다루는 대표적인 클래스들 중 하나.
  • String, StringBuffer와 함께 많이 사용되며, 연산이 많지 않을 때는 성능 이슈가 발생하지 않지만 성능 고려를 위하면 각 클래스 별 특징을 잘 알아야한다.
  • 가장 큰 특징은 '가변(mutable)성'을 가지며, 문자열의 추가, 수정, 삭제가 자주 일어나는 경우 사용한다. 특히 단일 쓰레드에서의 성능이 좋다.
StringBuilder sb = new StringBuilder();  // 내부 문자열 버퍼 생성
sb.append("Hello");
sb.append(" ");
sb.append("world!");

System.out.println(sb.toString()); // 이걸 왜 습관적으로 썼을까?
System.out.println(sb); // 사실 이렇게 써도 된다.

StringBuilder.toString()

StringBuilder 클래스 내부에서 문자열을 어떻게 다루고 있는지 확인해보자.

상속 받고 있는 AbstractStringBuilder에서 byte[] 형으로 문자열 관리하는 것을 확인 할 수 있음

내부 문자열을 사용해서 저장하기 때문에 단순 StringBuilder 출력 시에는 toString() 메소드를 메소드가 자동으로 호출되어 문자열로 변환되어 출력 됨.

System.out.println(sb.toString()); 
System.out.println(sb);

사실 이 두가지는 동일한 결과값을 가진다.

toString() 메소드가 호출되면 새로운 문자열 객체를 생성된다.
동일한 문자열에 대해서는 해당 메소드를 호출해서 사용하기 보다는 재사용을 하자.

profile
기록으로 기억하기

0개의 댓글

관련 채용 정보