String과 StringBuilder의 차이점에 대해 알아보자
String
string은 내부에 value값이 final로 선언되어있는 불변 객체
따라서 문자열을 변경해야하는 경우엔 기존에 참조하고 있던 곳의 값을 변경하는 것이 아니라,
변경된 문자열에 대한 string을 새로 생성하고 이 문자열로 참조를 바꾸는 식
이렇게 되면 연산이 끝난 후 "hello"가 남게 된다.
문자열 변경 연산이 많아질수록 메모리 관리에 좋지 않다.
StringBuilder
StringBuilder는 가변 객체
String처럼 참조를 변경하는 식이 아니라, 참조되어있는 객체를 변경하는 식
따라서 문자열을 변경하는 작업이 많은 경우 StringBuilder를 사용하는 것이 메모리 효율 측면에서 더 좋음
StringBuilder 사용법
fun main() {
val stringBuilder = StringBuilder("hello")
println(stringBuilder)
stringBuilder.append(" world!")
println(stringBuilder)
stringBuilder.delete(0, 6) // 0 <= < 5 범위
println(stringBuilder)
}
// 결과
// hello
// hello world!
// world!
StringBuffer라는 것도 존재한다.
StringBuilder는 가변 객체로 멀티스레드 환경에서 동시 접근을 하게 되면 데이터 일관성에 문제가 생길 수 있다.
이 StringBuffer를 사용하면 멀티스레드 환경에서 안전하게 연산을 할 수 있다.
참고 블로그
[동시성 제어] String, StringBuffer, StringBuilder 차이 한 번에 정리하기
목표 String, StringBuilder, StringBuffer의 차이점을 안다. 멀티 스레드 환경에서 StringBuffer을 이용해야 하는 이유를 안다. 개요 문자열과 관련된 프로그래밍을 위해서라면 String을 사용해야 한다. 아마 Ja
kotlinworld.com
https://notepad96.tistory.com/96
Kotlin StringBuilder - 문자열 효율적으로 다루기
1. StringBuilder String 문자열은 참조 타입으로써 만약 문자열 뒤에 문자열을 추가하는 것 같은 수정하는 작업을 한다면 기존 참조하고 있던 곳에 추가하는 것이 아니라 추가된 문자열을 갖는 새로 S
notepad96.tistory.com
'Kotlin > 📕Kotlin 공부' 카테고리의 다른 글
Kotlin 널 안정성(Null Safety) (1) | 2024.09.12 |
---|---|
Kotlin backing field (0) | 2024.09.12 |
isEmpty, isBlank 차이 (0) | 2024.07.27 |
Kotlin Mutable, Immutable List (0) | 2024.07.26 |
댓글