본문 바로가기
Kotlin/📕Kotlin 공부

StringBuilder

by yewoneeee 2024. 7. 20.

StringStringBuilder의 차이점에 대해 알아보자

 

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를 사용하면 멀티스레드 환경에서 안전하게 연산을 할 수 있다.

 

참고 블로그

 

'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

댓글