[Java] Java 문자열 String / StringBuilder
2025. 9. 29. 21:00ㆍDev./Java
728x90
반응형
문자열 Hello에 World를 추가하려면 어떻게 해야할까?
String
가장 쉬운 방법은 연산자를 사용해 합치는 방법이 있을 것이다.
String str = "Hello";
str += "World"; // "Hello World"
문자열을 추가해서 Hello World를 완성했다.
연산(+, replace, substring)을 사용해 문자열을 바꾼것 처럼 보이지만 사실 새로운 문자열 객체를 생성한 것이다.
String은 한 번 만들어진 문자열은 바뀌지 않는 불변(immutable) 객체이다.
그렇기 때문에 문자열을 자주 수정하는 경우 성능이 떨어진다.
주요 메서드
- char charAt(int index) : 특정 위치 문자 반환
- int length() : 문자열 길이
- boolean equals(Object obj) : 문자열 비교
- boolean equalsIgnoreCase(String another) : 대소문자 무시 비교
- String toUpperCase() / toLowerCase() : 대소문자 변환
- boolean contains(CharSequence s) : 포함 여부 확인
- boolean startsWith(String prefix) / endsWith(String suffix) : 접두/접미 확인
- int indexOf(String str) / lastIndexOf(String str) : 위치 찾기
- String substring(int beginIndex, int endIndex) : 부분 문자열 추출
- String trim() : 앞뒤 공백 제거
- String replace(char oldChar, char newChar) : 문자 치환
- String replaceAll(String regex, String replacement) : 정규식 기반 치환
- String[] split(String regex) : 문자열 분리
- String concat(String str) : 문자열 연결
- boolean isEmpty() : 비어있는지 확인
StringBuilder
StringBuilder는 문자열을 바꾸면 실제로 같은 객체 내부에서 수정되는 가변(mutable) 객체이다.
문자열을 반복적으로 수정/연결할 때 성능이 훨씬 좋다.
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // 같은 객체에서 수정
주요 메서드
- StringBuilder append() : 문자열/값 추가
- StringBuilder insert(int offset, ...) : 특정 위치에 삽입
- StringBuilder delete(int start, int end) : 문자열 삭제
- StringBuilder deleteCharAt(int index) : 특정 문자 삭제
- StringBuilder replace(int start, int end, String str) : 특정 범위 치환
- StringBuilder reverse() : 문자열 뒤집기
- char charAt(int index) : 특정 문자 반환
- void setCharAt(int index, char ch) : 특정 문자 변경
- int length() : 길이
- void setLength(int newLength) : 길이 조정
- String substring(int start, int end) : 부분 문자열 추출
- String toString() : String으로 변환
- int capacity() : 현재 버퍼 용량
- void ensureCapacity(int minimumCapacity) : 최소 용량 확보
정리
👉🏻 변경이 거의 없으면 → String
👉🏻 반복적으로 수정 → StringBuilder
728x90
반응형
'Dev. > Java' 카테고리의 다른 글
| [Java] Java 메서드(Method) 와 객체화 (0) | 2025.10.14 |
|---|---|
| [Java] HashSet (0) | 2025.10.10 |
| [Java] .equals()와 ==의 차이 (0) | 2025.10.03 |
| [Java] 타입 변환 (int, double, char, String) (0) | 2025.10.02 |
| [Java] for문과 향상된 for문 (0) | 2025.09.30 |