반응형
[JAVA] String 참조값 비교와 StringBuilder, StringBuffer 사용 이유
String에서 + 연산을 사용하면 안 되는 이유
StringBuilder, StringBuffer를 사용하는 이유
String에서 + 연산을 사용하면 메모리를 추가로 사용한다.
str1, str2 는 같은 곳을 참조함 (String pool에서의 같은 위치)
str3는 String을 + 연산을 사용해서 "abc"를 만들었는데도 String pool의 "abc"를 참조하지 않는다.
+연산을 String에서 하게 되면 String pool에서 찾지 않고 마치 new("abc")를 한 것처럼 "abc" 새로운 메모리가 생성된다.
이는 GC의 부담, 메모리의 낭비를 야기한다.
그러므로 String에서는 + 연산을 지양해야 함
== 연산자가 아닌 equals()를 사용하면 문자열은 전부 같으므로 결과는 모두 true이다.
StringBuilder, StringBuffer
StringBuilder도 내부적으로 toString()을 처리할 때 new 연산자를 사용하므로 새로운 메모리가 생성되지만,
toString()할 때 new 연산자를 단 한번 사용하기 때문에 여러 문자 결합에서 이점을 갖는다.
반응형
'프로그래밍 > 자바' 카테고리의 다른 글
[JAVA] 자바 메소드 참조 (0) | 2022.04.12 |
---|---|
[JAVA]자바 익명 클래스와 람다식 정리 (0) | 2022.04.11 |
[JAVA] 자바 접근 제어자 (0) | 2022.04.07 |
[JAVA] 자바 String, StringBuilder 클래스 활용 (0) | 2022.03.29 |
[JAVA] 자바 오버로딩 (Overloading) (0) | 2022.03.18 |