안드로이드 네이티브 앱 개발 공부를 위해 Kotlin의 기본적이면서도 중요한 문법들을 정리해보았다. 이 글은 변수 선언과 관련된 내용이다.
Kotlin에서는 두 키워드 var과 val을 사용하여 변수를 선언한다.
값이 변경되지 않는 변수에는 val을 사용한다. val을 사용하여 선언된 변수에 값을 재할당 할 수 없다.
값이 변경될 수 있는 변수에는 var을 사용한다.
count는 10의 초기 값이 할당되는 Int 유형의 변수이다.
var count: Int = 10
Int는 정수를 나타내는 유형이며 Kotlin에서 표현될 수 있는 많은 숫자 유형 중 하나이다. 다른 언어와 마찬가지로 수치 데이터에 따라 Byte, Short, Long, Float, Double을 사용할 수도 있다.
var count: Int = 10
count = 15
Kotlin 컴파일러는 변수에 초기 값을 할당할 때 할당된 값의 유형을 기반으로 유형을 추론할 수 있다.
val languageName = "Kotlin"
val upperCaseName = languageName.toUpperCase()
// inc()는 Int 연산자 함수이므로 컴파일 실패
languageName.inc()
Kotlin의 유형 추론 방식은 간결성과 유형 안전성을 모두 보장한다.
일부 언어에서는 초기 값을 명시적으로 제공하지 않고 참조 유형 변수를 선언할 수 있다. 이러한 경우 변수에는 일반적으로 null 값이 할당된다. 하지만 Kotlin 변수는 기본적으로 null 값을 보유할 수 없다.
// 컴파일 실패
val languageName: String = null
null 값을 포함하는 변수는 nullable 유형이어야 한다. ?를 변수 유형의 접미사로 지정하여 변수를 nullable로 지정할 수 있습니다.
val languageName: String? = null
val upperLanguageName : String? = languageName?.toUpperCase()
var name = "KWANWOO"
var lastName : String? = null
var fullName = name + (lastName?:"No Last Name")
fun ignoreNull(str: String?){
//null이 아니라고 했기 때문에 오류가 나지 않음
val notNull : String = str!!
//!!를 사용했기 때문에 String과 notNull뒤에 ?가 없어도 됨
val upperNull : String = notNull.toUpperCase()
}
nullable 변수는 신중하게 처리해야 한다. 아니면 심각한 NullPointerException이 발생할 위험이 있다. 예를 들어, 자바에서 null 값에 관해 메서드를 호출하려고 하면 프로그램이 비정상 종료된다.
추가로 String 템플릿에 대해 정리해 보았다.
var name = "KWANWOO"
println("my name is $name")
var name = "KWANWOO"
println("my name is ${name}And I'm 25")
var name = "KWANWOO"
var lastName = "KIM"
println("my name is ${name + lastName}And I'm 25")
println("this is 10\$something")
Kotlin에서 가장 기본이 되는 변수 선언에 대해 정리했다. 앞으로 함수 등 다양한 내용들을 시리즈로 정리할 예정이다. 중간에 예시중에 !!연산 쓸 때 함수 들어가긴 했는데 나중에 함수 정리 바로 하면 되겠지 일단 함수는 이렇게 쓴다 정도로만 이해하고 넘어가는걸로...ㅎㅎ