본문 바로가기

Coding/Kotlin(코틀린)

[Kotlin] 코틀린 기본 문법 정리 4 - List, Array, Try-Catch, Null Safety

1. List

val items = listOf(1, 2, 3, 4, 5)

 

list는 listOf 연산자를 통해 만들 수 있는데, 이렇게 만드는 list는 값의 변경이 불가능하다.

 

val items = mutableListOf(1, 2, 3, 4, 5)
items.add(10) // 값 추가
items.remove(2) // 값 삭제

 

mutableListOf는 값을 변경할 수 있는 리스트로, 기존에 자바에서 쓰던 ArrayList와 같은 기능을 한다.

map, filter, sorted등 list는 다양한 컬렉션 기능을 제공한다. 

 

 

2. Array

val items = arrayOf(1, 2, 3)

items.size // 배열의 크기를 구하기
items[2] = 1 // 배열의 값 변경

 

Array는 고정된 크기를 가지며, 요소를 추가하거나 제거할 수는 없으나 배열 안의 값을 변경할 수는 있다.

 

배열은 arrayOf를 통해 만들어지며, 인덱스를 사용하여 특정 위치의 값을 변경할 수 있다.

코틀린에서 실질적으로 배열은 잘 사용하지 않으며, 보통 리스트를 많이 사용한다

 

 

3. Try-Catch

try {
    var four = items[4]
} 
catch (e: Exception) {
    println(e.message)
}

 

에러의 예외처리를 할 때 사용!

try 안에 에러가 발생할 수 있는 코드를 넣고, 에러가 발생하면 catch문이 잡아서 처리를 해준다.

 

 

4. Null Safety

var name : String? = null // null 할당 가능 변수
name = "신" // 값 할당
name = null // null 재할당
    
var name2 = "" // 빈 문자열
name2 = name // error!!

 

타입 뒤에 ?를 넣어줘야지만 null을 넣을 수 있다. 

이렇게 null 할당 가능 변수로 설정하면 나중에 값을 넣거나 중간에 다시 null을 대입해줄 수 있다.

 

?가 붙은거랑 안 붙은건 별개의 타입으로 취급이 되기 때문에 name2에 name을 할당 불가!

 

if(name != null)
{
    name2 = name
}

 

이렇게 null 체크를 해서 null이 아닌 경우에는 String?의 타입이 String으로 변환이 되고 같은 타입이 됬기 때문에 넣을 수 있다.

 

name2 = name!!

 

또는, !!를 붙여 강제로 String 타입으로 변환할 수 있는데 이러한 코드는 null 검사 방법에 비해 강제로 변환된 거기 때문에 별로 좋지 않음 이왕이면 null 체크를 해주면 편이 좋다.

 

name?.let {
    name2 = name 
}

 

또는 코틀린 내장 함수중에 유용한 걸 활용하는 방법이 있다.

이 ?.let은 null이 아니라면 이 블록을 실행하라는 뜻으로, if문을 한번 거친거와 같은 효과가 난다.