반응형
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 | 31 |
Tags
- 자바
- table
- 이클립스
- input
- 테이블
- Eclipse
- javascript
- 배열
- CMD
- date
- ArrayList
- json
- Maven
- Button
- 이탈리아
- html
- 문자열
- IntelliJ
- CSS
- vscode
- Visual Studio Code
- string
- windows
- Java
- list
- js
- 정규식
- 인텔리제이
- Array
- 자바스크립트
Archives
- Today
- Total
어제 오늘 내일
[Java] StringBuilder 클래스 사용법 및 예제 본문
StringBuilder 클래스 사용법 및 예제
StringBuilder 클래스는 String 객체와 달리 변경 가능한(mutable) 문자열을 다룰 때 사용됩니다.
String 객체는 불변(immutable) 속성을 가지므로 문자열을 변경할 때마다 새로운 객체가 생성되지만,
StringBuilder는 기존 객체 내에서 문자열을 수정할 수 있어 성능이 향상됩니다.
1. StringBuilder 생성
StringBuilder sb1 = new StringBuilder(); // 빈 문자열 생성
StringBuilder sb2 = new StringBuilder("Hello"); // 초기 문자열 설정
StringBuilder sb3 = new StringBuilder(50); // 초기 용량(capacity) 설정
2. 주요 메서드
문자열 추가 (append)
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // Hello World
String 객체였다면, 문자열을 이어붙일 때 새로운 객체를 생성해야 하지만,
StringBuilder는 내부적으로 값이 수정됩니다.
문자열 삽입 (insert)
StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " Java");
System.out.println(sb); // Hello Java
특정 위치에 문자열을 삽입할 수 있습니다.
문자열 삭제 (delete, deleteCharAt)
StringBuilder sb = new StringBuilder("Hello World");
sb.delete(5, 11); // " World" 삭제
System.out.println(sb); // Hello
sb.deleteCharAt(0); // 첫 번째 문자 'H' 삭제
System.out.println(sb); // ello
delete(start, end)는 범위를 지정해 삭제하고,
deleteCharAt(index)는 특정 문자 하나만 삭제합니다.
문자열 변경 (replace)
StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java");
System.out.println(sb); // Hello Java
replace()를 활용하여, 특정 범위의 문자열을 다른 문자열로 교체할 수 있습니다.
문자열 뒤집기 (reverse)
StringBuilder sb = new StringBuilder("abcd");
sb.reverse();
System.out.println(sb); // dcba
String은 불변 객체이므로 reverse() 기능이 없습니다.
StringBuilder의 reverse() 메서드를 이용하면, 문자열을 쉽게 뒤집을 수 있습니다.
문자 추출 (charAt, substring)
StringBuilder sb = new StringBuilder("Hello");
char ch = sb.charAt(1); // 'e'
System.out.println(ch);
String sub = sb.substring(1, 4); // "ell"
System.out.println(sub);
charAt(index)는 특정 인덱스의 문자를 반환합니다.
substring(start, end)는 특정 범위의 문자열을 반환합니다.
문자열 길이 확인 (length) 및 용량 관리 (capacity, ensureCapacity)
StringBuilder sb = new StringBuilder("Hello");
System.out.println(sb.length()); // 5
System.out.println(sb.capacity()); // 기본 용량(16) + "Hello"의 길이
sb.ensureCapacity(50); // 최소 50의 용량을 가지도록 설정
System.out.println(sb.capacity()); // 변경된 용량 출력
capacity()는 현재 할당된 메모리 크기를 반환합니다.
ensureCapacity()는 최소 용량을 확보하도록 합니다.
3. String과 StringBuilder 비교
String str = "Hello";
str += " World"; // 새로운 객체 생성 (메모리 낭비)
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // 기존 객체에서 수정 (효율적)
문자열을 자주 변경해야 한다면 StringBuilder가 성능 면에서 유리합니다.
결론
- 문자열을 자주 변경해야 한다면 StringBuilder를 사용하면 성능이 크게 향상됨.
- 멀티스레드 환경에서는 StringBuffer(동기화 지원)를 고려.
- 문자열이 변경되지 않는다면 String을 사용하는 것이 더 적절.
반응형
'IT > Java' 카테고리의 다른 글
[Java] 배열 선언 및 초기화 방법 (선언과 동시 초기화, 다차원 배열, Stream, 난수 초기화 등) (0) | 2025.03.12 |
---|---|
[Java] 조건문 - switch-case문 예제 (0) | 2025.03.11 |
[Java] 조건문 - if문 예제 (if문, if-else문, if-else if-else문, 삼항연산자) (0) | 2025.03.10 |
[Java] String / isEmpty() 사용법 및 예제 (1) | 2024.12.09 |
[Java] 코드 포인트(Code Point) vs 코드 유닛(Code Unit) (0) | 2024.12.09 |
Comments