Coding/JAVA

[JAVA]StringBuilder

민톨이 2024. 9. 18. 19:08
728x90

 

📋 String

- String클래스는 불변이다.  

- 불변인 String 클래스의 단점: 문자를 더하거나 변경할 때마다 계속해서 새로운 객체를 생성해야함

- 문자를 자주 더하거나 변경해야 하는 상황에 더 많은 String객체를 만들고 GC해야함

 ===> 컴퓨터의 CPU, 메모리 자원을 더 많이 사용하게 됨 => 문자열을 더 자주 변경할수록 시스템의 자원을 더 많이 소모한다.

 

📋 GC(Garbage Collection)

- 자바 가상 머신의 힙 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스

 

📋 StringBuilder

- 가변

- StringBuilder 객체 안에서 문자열을 추가, 삭제, 수정할 수 있음 (이 때마다 새로운 객체를 생성하지 않음)

===> 메모리 사용을 줄이고 성능을 향상시킬 수 있음 

❗️단, 사이드 이펙트를 주의해야 함

 

➡️ StringBuilder는 보통 문자열을 변경하는 동안만 사용하다가 문자열 변경이 끝나면 안전한(불변) String 으로 변경하는 것이 좋다.

 

📌 StringBuilder를 직접 사용하는 것이 더 좋은 경우

- 반복문에서 반복해서 문자를 연결할 때

- 조건문을 통해 동적으로 문자열을 조합할 때

- 복잡한 문자열의 특정 부분을 변경해야 할 때

- 매우 긴 대용량 문자열을 다룰 때