[코틀린 완전정복] 문자열

Dohyeon Ko·2021년 9월 15일
0

코틀린

목록 보기
6/7
post-thumbnail

문자열

문자열은 연속된 문자의 배열과 같다. 또한 문자열은 불변(immutable) 이기 때문에 참조되고 있는 메모리가 변경될 수 없다. 파이썬과 다르다. 파이썬은 문자열을 리스트처럼 처리하기 때문에 값의 변경이 가능하지만 코틀린은 그렇지 않다.

문자열의 기본 처리

var이나 val로 선언한 문자열을 변경하려고 하면 오류가 발생한다. 위에서 말했듯 코틀린 에서의 문자열은 불변이기 때문이다. 다만 var로 선언하는 경우 완전히 새로운 문자열을 할당하는 것은 가능하다.

fun main() {
    val hello : String = "Hello Kotlin"
    // hello[0] = "k" 오류 발행

    var temp : String = "기존 문자열"
    temp = "새로운 문자열" // var로 선언한 경우 새로운 문자열 할당 가능
}

새로운 문자열을 할당하는 경우 기존에 존재하던 문자열이 사용하던 메모리 공간은 GC(Garbage Collector) 에 의해 제거된다.

문자열 추출하고 병합하기

substring 을 통해 문자열을 추출하고 + 로 병합할 수 있다.

fun main() {
    val s1 = "hello"
    println(s1.substring(0..1)) // From, To를 지정해서 문자열을 추출할 수 있다.

    val s2 = s1.substring(0..0) + 'i' // + 를 통해 새로운 문자열로 병합할 수 있다.
    println(s2)
}

문자열 비교하기

코틀린 에서 문자열을 비교하기 위해서는 compareTo 를 사용하거나 == 를 사용하면 된다. compareTo는 s1.compareTo(s2) ← 이렇게 사용할 수 있다. s1이 s2와 같다면 0, s1이 작다면 양수, s2가 작다면 음수를 반환한다. 또한 두 번째 인자로 true를 넣어주면 대소문자 구별 없이 문자열을 비교한다.

fun main() {
    val s1 = "hello"
    val s2 = "HELLO"
    // 두 번째인자로 true를 넣어주면 대소문자 구별없이 비교
    if (s1.compareTo(s2, true) == 0) {
        println("Equal!")
    } else {
        println("Not Equal!")
    }
//    == 를 사용해도 비교가능
//    if (s1 == s2) {
//        println("Equal!")
//    } else {
//        println("Not Equal!")
//    }
}

StringBuilder

StringBuilder 는 문자열을 좀 더 유동적으로 사용할 수 있게 해준다. 문자열이 사용할 공간을 더 크게 잡아서 문자열을 변경할 수 있게 해준다. 하지만 기존의 문자열보다는 처리 속도가 조금 느리다는 단점이 있다.

fun main() {
    var s1 = StringBuilder("Hello")
    s1[0] = 'C' // 기존에는 불가능 했지만 StringBuilder를 이용하면 가능
}
profile
티스토리로 옮겼어요! (https://codekodo.tistory.com)

0개의 댓글