여니의 성장 diary
article thumbnail
728x90
반응형

코딩테스트 연습문제를 풀다가 막혀서 방법을 찾다보니 우연히 알게된 StringBuilder 클래스에 대해 알게되었다!

아직 자세하게 모든 내용을 공부한 것은 아니지만 간단하게 활용 가능한 메서드 몇 가지만 정리해두기로 :)

참고로 정리된 내용은 ChatGPT를 통해 얻은 정보를 정리한 것!

 

StringBuilder 클래스란?

 

먼저 StringBuilder 클래스는 문자열을 동적으로 생성하고 수정하는 데 사용되는 클래스이다.

'String' 클래스와는 달리 가변적인 문자열을 다루기에 효율적이며,

문자열에 대한 추가, 수정 및 삭제 작업을 효율적으로 수행할 수 있도록 설계 되어 

변경 가능한 문자열을 처리할 때 사용되며, 주로 문자열을 빌드하거나 조작할 때 활용되는 클래스이다.

특히 문자열을 빈번하게 수정하거나 연결해야하는 상황에서 'String' 클래스보다 더 효율적으로 작업할 수 있는 클래스이다.

 

 

StringBuilder 클래스의 특징
가변성(Mutability)

'StirngBuilder' 클래스의 가장 큰 특징은 가변성이다.

'StringBuilder' 객체는 생성된 후에 내부의 문자열을 변경할 수 있는 반면,

'String' 클래스는 한 번 생성되면 불변(immutable)하기 때문에 수정할 수 없다.

 

이러한 특징 때문에 아래 예시 코드처럼 Stirng 객체를 StirngBuilder 객체로 변경하여 활용하면

문자열 조작 작업을 효율적으로 수행할 수 있고, 문자열의 변경이 빈번한 경우에 유용하다.

String str = "Hello";
StringBuilder str_b = new StringBuilder(str);

 

StirngBuilder 클래스의 주요 메서드

'StringBuilder' 클래스는 다양한 메서드를 제공하여 문자열 조작이 가능하도록 지원하는데, 그 중 몇 가지 주요한 메서드만 정리해보았다.

  • append() : 문자열의 끝에 내용을 추가
  • insert() : 지정된 위치에 내용을 삽입
  • delete() : 지정된 범위의 문자를 삭제
  • replace() : 지정된 범위의 문자를 다른 문자열로 대체
  • reverse() : 문자열 뒤집기
  • toString() : 'StirngBuilder' 객체를 'String'으로 변환

 

그 외 특징

'StringBuilder'는 문자열을 수정할 때 새로운 객체를 생성하지 않고 내부 버퍼를 수정하므로 성능이 향상된다.

이는 문자열을 여러 번 수정해야 할 때 매우 유용하고, 아래에 실제 성능 향상 비교 내용을 정리해보았다.

 

또한 스레드 안전성 측면에서 'StringBuilder'는 단일 스레드 환경에서만 사용될 것을 고려하여 스레드의 안전성은 보장되지 않는다.

반면 'StringBuffer'는 'StringBuilder'와 유사하지만 동기화되어 스레드의 안전한 작업을 지원한다고 한다.

 

'String' 클래스와 'StringBuilder' 클래스의 비교

실제로 같은 문제를 해결하는 데 있어서 'String' 클래스를 활용했을 때보다 'StringBuilder' 클래스를 활용하여 해결했을 때

메모리 용량도 약 5배 적게 사용되고, 시간은 무려 80배 가량 단축되는 것을 확인할 수 있었다.

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!