Archives
Recent Posts
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[19일차 Kotlin] 문자열(String, StringBuffer) 본문

Computer/Kotlin

[19일차 Kotlin] 문자열(String, StringBuffer)

Wise-99 2023. 5. 24. 01:29

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 String

  • " " 로 묶어서 관리하는 문자열을 의미한다.
  • Kotlin은 문자열을 Java에 동일하게 String 클래스의 객체를 생성해서 관리한다.
  • Java와 거의 동일하게 제공되며 몇가지 메서드를 추가하였다.
  • Kotlin은 문자열을 배열 형태로 관리한다.
  • 문자열의 글자를 0부터 시작하는 인덱스 번호로 관리할 수 있어 Java 보다 편리하게 사용할 수 있다.
  • 문자열은 불변형으로 가져다 사용하는 것만 가능하다.

제공 메서드

  • compareTo : 
    • 문자열을 비교하여 같으면 0, 음수나 양수면 다른 문자열이다.
    • 두 번째 값으로 true 넣어주면 대소문자를 무시하고 비교한다.
  • split : 문자열을 지정된 구분자를 이용해 잘라낸다.
  • substring : 지정된 범위의 문자열을 반환한다.

 

 

 

📖 String 예제 코드

✔️ 문자열에서의 추출

fun main() {
    val str1 = "안녕하세요"
    println("str1 : $str1")

    println("str1[0] : ${str1[0]}") // 안
    println("str1[1] : ${str1[1]}") // 녕
    
    str1[0] = "A"    <<< 오류 발생
}

코드 해석

  • 원하는 번째의 글자를 가져올 수 있다.
  • 문자열은 글자를 바꾸는 것이 불가능하다.

✔️ substring

fun main(){
    val str1 = "안녕하세요"

    val str2 = str1.substring(1..3)
    println("str2 : $str2") // 녕하세
}

코드 해석

  • 원하는 부분의 글자들을 추출하여 새로운 문자열로 받아온다.
  • 해당 코드는 두 번째 글자 ~ 네 번째 글자를 받아온다.

✔️ 문자열 비교(compareTo)

fun main(){
    val str3 = "Hello World"
    val str4 = "hello world"
    val str5 = "Hello World"

    if(str3 == str4){
        println("str3과 str4는 같습니다")
    }

    if(str3 == str5){
        println("str3과 str5는 같습니다")
    }

    println(str3.compareTo(str4)) // -32
    println(str3.compareTo(str5)) // 0

    println(str3.compareTo(str4,true)) // 0

    if (str3.equals(str4, true)){
        println("대소문자 무시하고 같습니다")
    }
}

코드 해석

  • if(str3 == str4){ ... }
    • str3과 str4는 스펠링은 같지만 대소문자가 다르다.
    • 따라서 str3과 str4는 다른 문자열로 인식된다.
  • println(str3.compareTo(str4))
    • compareTo는 같으면 0, 다르면 0이 아닌 값이 나온다.
    • compareTo는 문자열을 구성하는 각 글자의 코드 값을 합산한 결과를 뺀 값을 전달한다.
    • 해당 코드는 -32가 출력된다.
  • println(str3.compareTo(str4,true))
    • 두 번째 매개변수에 true를 넣어주면 모두 소문자로 변환한 다음 코드 값을 빼는 작업을 수행한다.
    • 대소문자를 구분하고 같은가를 확인한다.
    • 해당 코드는 0이 출력되며 같은 문자열로 인식된다.
  • if(str3.equals(str4, true)){ ... }
    • 대소문자 무시하고 같은지를 비교한다.
    • 해당 if문은 true로 판별되어 if문 안의 println("대소문자 무시하고 같습니다")이 출력된다.

✔️ 문자열 나누기(split)

fun main(){
    val str6 = "ab cd ef gh"

    val r6 = str6.split(" ")
    println("r6 : $r6")

    for(temp6 in r6){
        println(temp6)
    }
}

코드 해석

  • val r6 = str6.split(" ")
    • rstr6은 " "(공백) 기준으로 나눠져 r6에 배열로 저장된다.

✔️ 문자열 병합

fun main(){
    val str7 = "abc"

    val str8 = str7 + "def"

    val str9 = str8 + 10
    println("str7 : $str7")
    println("str8 : $str8")
    println("str9 : $str9")
}

코드 해석

  • val str8 = str7 + "def"
    • 두 문자열이 합쳐진 새로운 문자열이 만들어진다.
  • val str9 = str8 + 10
    • 문자열이 아닌 값을 새로운 문자열로 만든 다음 두 문자열을 합친 새로운 문자열을 만들어준다.

📖 StringBuffer

  • 문자열은 불변형이므로 + 연산자를 통해 문자열을 합치면 문자열 객체가 계속 생성된다.
  • StringBuffer를 사용하면 관리하는 문자열을 직접 조작할 수 있다.
  • String은 지속적인 문자열 연산을 수행하면 메모리를 많이 사용하지만 원본이 유지된다.
  • StringBuffer는 메모리를 절약할 수 있지만 원본을 유지할 수 없다.

 

 

 

📖 StringBuffer 예제 코드

fun main(){
    val buffer1 = StringBuffer()
    buffer1.append("abc")
    buffer1.append(100)
    buffer1.append(11.11)
    println("buffer1 : $buffer1")
}

Console 출력 결과

 

 

'Computer > Kotlin' 카테고리의 다른 글

[19일차 Kotlin] Set  (0) 2023.05.24
[19일차 Kotlin] List  (0) 2023.05.24
[19일차 Kotlin] 배열(Arrray)  (0) 2023.05.23
[18일차 Kotlin] 리플렉션(Reflection)  (0) 2023.05.23
[18일차 Kotlin] Infix 함수  (0) 2023.05.23