본문 바로가기
JAVA

[JAVA] String vs StringBuilder

by watergrace2u 2023. 7. 5.
반응형
SMALL

흔히 String 대신 StringBuilder를 사용하는 것이 더 좋다고 말한다. 그 이유는 무엇일까?

 

먼저 String str1 = "A"; 식을 보자.

이렇게 하면 힙영역에는 "A" 라는 객체가 생성되고, str1은 스택 영역에 생성된 후 "A" 라는 객체를 참조하고 있다.

 

여기에서 만약 "B" 라는 문자열을 더해본다면? str1 = str1 + "B";

 

단순히 상상하기로는 힙 영역에 "AB" 가 새로 생성될 것 같지만 그렇지 않다.

새로 "B" 라는 객체가 생성되고 이 두개를 합친 "AB"가 생기게 된다. 그리고 str1은 "AB" 객체를 가리킨다.

그러면 힙 영역에는 이제 아무도 참조하지 않는 "A"와 "B" 객체가 남아있고 가비지 컬렉션에 의해 사라질 때까지 기다려야한다. 

 

만약 이러한 연산이 많아지면 계속해서 사용되지 않는 객체가 힙에 많아질 것이고, 메모리 관리에 어려움을 겪게된다.

 

하지만 StringBuilder 를 사용하면 이러한 걱정은 하지 않아도 된다. 아래르 살펴보자.

 

SringBuilder 는 우리가 상상한 대로 "A" 객체에 "B"가 추가되어 sb의 참조값이 변하지 않고 객체의 데이터가 변한다.

따라서 불필요한 데이터가 생기지 않아서 메모리 관리에 이점을 얻게 된다.

 

cf. 

https://www.youtube.com/watch?v=DD_jwaIKrTE 

 

반응형
LIST

'JAVA' 카테고리의 다른 글

[JAVA] 템플릿 메서드  (0) 2022.03.31
[JAVA] 다운캐스팅  (0) 2022.03.27
[JAVA] 다형성 (Polymorphism)  (0) 2022.03.24
[JAVA] 가상 메서드  (0) 2022.03.24
[JAVA] 상위 클래스로 묵시적 형변환 (업캐스팅)  (0) 2022.03.24

댓글