반응형
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
- vscode
- CMD
- IntelliJ
- 자바스크립트
- 문자열
- 이탈리아
- input
- list
- HashMap
- json
- html
- 자바
- 정규식
- 인텔리제이
- CSS
- Visual Studio Code
- javascript
- Array
- table
- ArrayList
- string
- replace
- Button
- date
- Java
- map
- js
- 이클립스
- Eclipse
- 배열
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] 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 |
[Java StringBuilder] append() – 문자열 이어붙이기 (0) | 2025.09.20 |
Comments