안드로이드 개발자의 창고
[19일차 Kotlin] 문자열(String, StringBuffer) 본문
출처 : 안드로이드 앱스쿨 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 |