728x90
📋 String
- String클래스는 불변이다.
- 불변인 String 클래스의 단점: 문자를 더하거나 변경할 때마다 계속해서 새로운 객체를 생성해야함
- 문자를 자주 더하거나 변경해야 하는 상황에 더 많은 String객체를 만들고 GC해야함
===> 컴퓨터의 CPU, 메모리 자원을 더 많이 사용하게 됨 => 문자열을 더 자주 변경할수록 시스템의 자원을 더 많이 소모한다.
📋 GC(Garbage Collection)
- 자바 가상 머신의 힙 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체를 모아 주기적으로 제거하는 프로세스
📋 StringBuilder
- 가변
- StringBuilder 객체 안에서 문자열을 추가, 삭제, 수정할 수 있음 (이 때마다 새로운 객체를 생성하지 않음)
===> 메모리 사용을 줄이고 성능을 향상시킬 수 있음
❗️단, 사이드 이펙트를 주의해야 함
➡️ StringBuilder는 보통 문자열을 변경하는 동안만 사용하다가 문자열 변경이 끝나면 안전한(불변) String 으로 변경하는 것이 좋다.
📌 StringBuilder를 직접 사용하는 것이 더 좋은 경우
- 반복문에서 반복해서 문자를 연결할 때
- 조건문을 통해 동적으로 문자열을 조합할 때
- 복잡한 문자열의 특정 부분을 변경해야 할 때
- 매우 긴 대용량 문자열을 다룰 때
'Coding > JAVA' 카테고리의 다른 글
| [JAVA] NoClassDefFoundError: class.$1 파일 (0) | 2025.11.30 |
|---|---|
| Scanner와 BufferedReader 차이 (0) | 2024.10.27 |
| [JAVA]OCP(Open-Close Principle) 원칙 (0) | 2024.09.07 |
| [JAVA]상속과 메서드 오버라이딩(@override) (1) | 2024.09.03 |
| [JAVA] 클래스/메서드 호출 코드 리팩토링 (0) | 2024.08.23 |