[Java] Java 문자열 String / StringBuilder

2025. 9. 29. 21:00Dev./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