728x90
코틀린 언어로 안드로이드 프로그래밍을 하고 있는데 코틀린 문법 중에서 헷갈리는 것들이 좀 많았다. 그래서 그 부분들을 정리해 보려고 한다. 아마 꽤 많아서 여기에 다 쓰지는 않을 것 같다.
- 변수를 선언하는 시점에 값을 대입할 수 없다면 변수의 타입을 명시해야한다.
var num: Int
- 코틀린은 기본적으로 null값을 허용하지 않는다. 그래서 null 허용 타입(nullable type)으로 명시해줘야 null값을 대입할 수 있다.
var num:Int? = null
- nullable타입일 때 null값이 들어갈 수 있기 때문에 nullable타입의 속성이나 메서드에 접근하지 못하도록 한다.
[1] var str1:String? = null
[2] println(str1.length)
[3] var str2:String? = "str"
[4] println(str2.length)
--[2], [4]번줄 모두 오류!!--
//[1]번과 같이 null값이 들어가 있을 수 있으므로 nullable타입의 속성이나 메서드에 접근하면 오류가 난다.
- nullable타입의 속성이나 메서드에 접근하기 위한 방법
- 조건문을 이용하여 null값이 아니면 접근
var num:str? = "hi" if(str!=null) println(str.length)//2
- 안전 호출 연산자
?.
를 사용(null값이면 null을, null값이 아니면 속성에 접근하여 값을 반환) var str:String? = null print(str?.length) //null
- 엘비스 연산자
?:
를 사용(왼쪽의 값이 null이면 오른쪽 값을, 왼쪽의 값이 null이 아니면 왼쪽의 값을 반환) var str:String? = null print(str?.length ?: 0) //0
- null값이 아님을 보장하는 연산자
!!
를 사용(null값이 들어오지 않을 것이라면 이 연산자를 사용) str:String? = "hi" str!! //str에는 null값이 들어가 있지 않으며 앞으로도 들어가지 않을 거라는 뜻.(타입이 String? => String으로 변환됨) print(str.length)//2
참고한 책: 만들면서 배우는 코틀린 & 안드로이드 프로그래밍
혹시 제가 잘못 이해한 부분이(잘못된 정보) 있다면 알려주시면 감사하겠습니다 :)