반응형
Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
Tags
- HashMap
- 문자열
- js
- html
- Visual Studio Code
- ArrayList
- replace
- 자바
- Array
- 인텔리제이
- IntelliJ
- Button
- table
- vscode
- 자바스크립트
- json
- javascript
- 정규식
- Eclipse
- 이클립스
- input
- CMD
- map
- list
- CSS
- 배열
- Java
- 이탈리아
- string
- date
Archives
- Today
- Total
어제 오늘 내일
[Java StringBuilder] capacity(), ensureCapacity() – 내부 버퍼 관리 본문
StringBuilder는 문자열을 수정할 때마다 새로운 객체를 만들지 않고, 내부 버퍼를 사용해 문자열을 관리합니다.
이 내부 버퍼의 크기를 확인하거나 조절하는 데 쓰이는 메서드가 capacity()와 ensureCapacity()입니다.
1. capacity() – 버퍼 크기 확인
public int capacity()
StringBuilder의 현재 버퍼 용량을 반환- 문자열 길이(
length())와는 다름
StringBuilder sb = new StringBuilder("Hello");
System.out.println("문자열 길이: " + sb.length()); // 5
System.out.println("버퍼 용량: " + sb.capacity()); // 21 (기본 16 + "Hello" 5)
👉 StringBuilder는 처음부터 넉넉한 공간을 확보하고, 추가 문자열이 들어오면 버퍼를 자동 확장합니다.
2. ensureCapacity() – 버퍼 확장 예약
public void ensureCapacity(int minimumCapacity)
- 최소한
minimumCapacity용량을 확보하도록 보장 - 현재 용량보다 작거나 같으면 아무 변화 없음
- 현재 용량보다 크면, (기존 용량 × 2 + 2) 또는 최소 요구 용량 중 더 큰 값으로 확장
StringBuilder sb = new StringBuilder();
System.out.println("초기 용량: " + sb.capacity()); // 16
sb.ensureCapacity(50);
System.out.println("확장 후 용량: " + sb.capacity()); // 50 이상
👉 한 번에 대량의 문자열을 추가할 게 확실하다면, 미리 ensureCapacity()로 공간을 확보해두면 성능이 좋아집니다.
3. 실전 활용 예제
대량 데이터 처리 전에 용량 확보
int expectedSize = 1000;
StringBuilder sb = new StringBuilder();
sb.ensureCapacity(expectedSize);
for (int i = 0; i < 1000; i++) {
sb.append(i).append(" ");
}
System.out.println("최종 용량: " + sb.capacity());
👉 미리 공간을 확보하지 않았다면, 반복 중 여러 번 버퍼가 재할당되며 성능 저하가 발생할 수 있습니다.
capacity vs length 차이
StringBuilder sb = new StringBuilder("Java");
System.out.println(sb.length()); // 4 (문자열 길이)
System.out.println(sb.capacity()); // 20 (버퍼 용량)
👉 문자열의 실제 길이와 버퍼 크기는 다르다는 점을 꼭 기억해야 합니다.
4. 정리
capacity()→ 현재 내부 버퍼 용량 확인ensureCapacity(n)→ 최소n이상의 버퍼 확보 보장- 대량 데이터 처리 시 미리 용량 확보하면 성능 최적화 가능
length()와capacity()는 서로 다름 (문자열 길이 vs 버퍼 크기)
🔑 한 줄 정리
👉 capacity()와 ensureCapacity()를 활용하면 StringBuilder를 더 효율적으로 사용할 수 있다!
반응형
'IT > Java' 카테고리의 다른 글
| [Java StringBuilder] charAt(), setCharAt() – 특정 문자 읽기와 수정하기 (0) | 2025.09.23 |
|---|---|
| [Java StringBuilder] setLength() – 문자열 길이 강제로 조정하기 (0) | 2025.09.22 |
| [Java StringBuilder] reverse() – 문자열 뒤집기 (0) | 2025.09.21 |
| [Java StringBuilder] replace() – 문자열 일부 교체하기 (0) | 2025.09.21 |
| [Java StringBuilder] insert() – 원하는 위치에 문자열 삽입하기 (0) | 2025.09.20 |
Comments