자바 vs. 코틀린 자바의 ==와 != 연산자는 참조 동등성(referential equality)을 비교하기 때문에 실제 문자열 내용을 비교하려면 equals() 메서드를 사용해야 한다. 코틀린에서는 ==가 기본적으로 equals()를 가리키는 편의 문법(syntatic sugar)이기 때문에 ==를 사용하면 직접 equals()를 호출하므로, 따로 equals()를 호출할 필요가 없다. 널 가능성을 논의에서 배제하면, 위 코드는 자바의 s1.equals(s2)와 같다. 코틀린에서 참조 동등성을 쓰고 싶으면 어떻게 할까? ===와 !== 연산자를 사용하면 된다.
문자열은 사전식 순서로(lexicographically) 정렬된다. 따라서 <, >, <=, >= 같은 연산자를 사용해 문자열을 비교할 수 있다.
println("abc" < "cba") // true println("123" > "34") // false
문자열은 수 타입이나 불로 변환하는 toByte(), toShort(), toInt(), toLong(), toFloat(), toDouble(), toBoolean() 변환 함수를 제공한다. 문자열이 대상 타입으로 변환될 수 있게 형태가 잘 잡혀 있지 않다면 이런 함수는 런타임 오류를 발생시킨다.
다음은 문자열이 제공하는 다른 유용한 함수들이다.
isEmpty isNotEmpty |
문자열이 비어있는지 검사한다. |
"Hello".isEmpty() "".isEmpty() "Hello".isNotEmpty() |
false true true |
substring |
부분 문자열을 추출한다. |
"Hello".substring(2) "Hello".substring(1, 3) startsWith |
"llo" "el" |
endsWith |
접두사(prefix)나 접미사(suffix)인지 검사한다. |
"Hello".startsWith("Hel") "Hello".endsWith("lo") |
True true |
indexOf |
인자로 받은 문자나 문자열이 수신 객체인 문자열에 나타나는 첫 번째 인덱스를 반환한다. |
// 맨 앞부터 찾기 "abcabc".indexOf('b') "abcabc".indexOf("ca") "abcabc".indexOf("cd") // 주어진 인덱스부터 찾기 "abcabc".indexOf('b', 2) "abcabc".indexOf("ab", 2) |
1 2 -1
4 3 |
이 책 전반(특히 7장 컬렉션과 I/O 자세히 알아보기)에 걸쳐 코틀린 문자열 API 예제를 더 살펴볼 것이다. 또한, 공식 문서에서도 더 많은 정보를 얻을 수 있다(kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html).