IT/JAVA

StringBuilder

iamhyeon 2025. 1. 19. 12:41

String 객체끼리 더하는 방법은 메모리 할당과 해제를 발생시키는데 덧셈 연산 많아진다면 성능적으로 좋지 않다

많은 문자열을 연결하면 중간 문자열 객체가 생성되어 비효율적인 코드가 생성된다

 

Java에서 String  객체는 변경이 불가능하다. (불변 객체 (immutable) )

한 번 생성되면 내용을 바꿀 수 없다.

따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 들어간다. (JVM의 GC가 처리)

StringBuilder 는 변경 가능한 문자열을 만들어 주기 때문에, String 을 합치는 작업 시 하나의 대안이 될 수 있다.

 

StringBuilder        ( java.lang.StringBuilder )

mutable한 성질.  값이 변할 수 있다.

기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다.

긴 문자열을 더하는 상황이 발생할 경우 StringButtfer 또는 StringBuilder를 사용하는 것이 좋다.

 

 

ex)

StringBuilder sb = new StringBuilder();
sb.append("ab").append("cd");

String str = sb.toString();

System.out.println(sb);
System.out.println(str);

출력

 

📝

1. 문자열 변경이 빈번하지 않는다면 String 사용을 고려
2. 문자열이 빈번하게 변경되면서 멀티쓰레드 환경이라면 StringBuffer 사용을 고려
3. 문자열이 빈번하게 변경되면서 멀티쓰레드 환경이 아니라면 StringBuilder 사용을 고려

 


 

기본 생성자

StringBuilder sb = new StringBuilder();

 

int size 값을 인자로 하는 생성자

StringBuilder sb = new StringBuilder(10);

 

String 문자열을 인자로 하는 생성자

StringBuilder sb = new StringBuilder("abcd");

 

 

주요 메서드

기능 설명
append 문자열 추가
insert(int offset, String str) offset위치에 str추가
replace(int idx1, int idx2, String str) idx1,idx2 사이의 문자열을 str으로 대체한다
substring(int start)
substring(int start, int end)
start 부터 인덱스 끝 [end-1] 의 값 반환
deleteCharAt(int index) 인덱스에 위치한 문자 하나 삭제
delete(int start, int end) start부터 end-1까지 문자 삭제
toString String으로 반환
reverse 문자 전체 뒤집기
setCharAt(int idx, String s) idx위치의 문자를 s로 변경
setLength 문자열 길이 조정
현재 문자열보다 길게 조정하면 공백으로 채워지고,
짧게 조정하면 나머지 문자는 삭제한다
trimToSize 문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정
String 클래스의 trim()이 앞뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것.
배열의 남는 사이즈는 공백이므로, 무자열 뒷부분의 공백을 모두 제거해준다고 보면 된다

 

 

 

 

 

 

 

 

 

 


refer to

https://onlyfor-me-blog.tistory.com/317

https://myeongju00.tistory.com/61

 

 

 

반응형

'IT > JAVA' 카테고리의 다른 글

HashSet  (0) 2025.03.20
Pattern, Matcher Class  (0) 2025.02.25
IntStream  (0) 2025.01.04
Stream  (0) 2025.01.03
Java 란  (3) 2024.12.27