본문 바로가기

학습 노트/Kotlin (2024)

003. 조건문과 array 그리고 list

조건문

val myAge = 15

if (myAge >= 18) {
    println("can drunk")
} else {
    println("reject")
}

if문은 if와 '()'를 사용한다.

# Python
if True:
    print("True")
// Swift
if true {
    print("True")
}

python과 swift와는 조금씩 다른데, '()'의 유무만 제외하면 swift와 굉장히 흡사하다.

 Array

val temparr = arrayOf("Seoul", "Busan", "London", "NewYork")
println(temparr)
[Ljava.lang.String;@6d03e736

array의 선언은 arrayOf를 사용한다.
선언 시점에서 메모리의 값이 정해지며, 요소를 추가하거나 제거할 수는 없다.
다만 인덱스 접근이 굉장히 빠르고, 기본적으로 mutable이기 때문에 값을 업데이트 하는 것은 가능하다.
또 다른 단점이 존재하는데 출력에 필요한 함수가 존재한다는 것이다.

import java.util.*

val temparr = arrayOf("Seoul", "Busan", "London", "NewYork")
println(Arrays.toString(temparr))
println(temparr)
[Seoul, Busan, London, NewYork]
[Ljava.lang.String;@6d03e736

일반적인 언어들과 달리 바로 출력하려고 하면 메모리 주소가 출력되는데 따로 Arrays를 import 하고 string으로 변환해 출력해야 한다.

val temparr = arrayOf("Seoul", "Busan", "London", "NewYork")
println(Arrays.toString(temparr))
temparr[2] = "Paris"
println(Arrays.toString(temparr))
[Seoul, Busan, London, NewYork]
[Seoul, Busan, Paris, NewYork]

이제 Array의 모습을 확인할 수 있으니 요소를 업데이트해 보면 index를 사용해 바로 업데이트가 되는 걸 볼 수 있다.

List

val temparr1 = listOf("Seoul", "Busan", "London", "NewYork")
val temparr2 = mutableListOf("Seoul", "Busan", "London", "NewYork")

List는 두 가지가 존재하는데 List와 Mutable List이다.
이 둘의 차이는 '가변성'으로 List는 val로 선언하든 var로 선언하든 이후에 일체의 수정이 불가능하다.

var temparr1 = arrayListOf("a", "b", "c", "d")
println(temparr1)

이 외에 array도 아니고 list도 아닌 것이, 메모리 사용의 이점도 없으면서 장점도 mutableList와 동일한 이상한 배열이 하나 있는데, 바로 ArrayList다.
결과적으로 arrayList가 mutableList의 인터페이스 구현체이므로 mutablList를 호출하면 내부적으로 arrayList를 호출하는 꼴이 되는데, 너무 복잡하니 꼭 필요한 경우가 아니라면 대게 mutablList를 쓰는 것이 유연성 면에서 더 유리하다고만 알아 두기로 하자.

val temparr1 = listOf<String>()
val temparr2 = arrayOf<Int>()
val temparr3 = mutableListOf<Any>()

List는 기본적으로 한 가지 타입의 데이터를 저장하도록 돼있다.
이는 kotlin의 권장 사항이기도 한데, 위와 같고, Any를 사용하면 여러 타입의 데이터를 저장할 수는 있다.

'학습 노트 > Kotlin (2024)' 카테고리의 다른 글

005. nullSafety  (0) 2024.05.05
004. loop와 function  (0) 2024.05.05
002. 기본 연산자들  (0) 2024.05.04
001. 출력과 기본 자료형  (0) 2024.05.04