Kotlin
Java를 사용하다 보니 Java를 완벽히 대체할 수 있다는 Kotlin이라는 언어에 관심이 갔다.
그래서 Kotlin의 기본부터 한번 공부해보기로 했다.
Java와 비슷하면서도 많이 다른 Kotlin..
변수에 관해
Java와는 다르게 Kotlin에서는 처음 변수 설정을 할 때에는 var 또는 val을 사용한다.
여기서 var와 val의 차이점이 있는데
var = 변수
val = 상수
의 느낌이 있는 듯 했다.
var로 변수를 선언하면 값을 바꿔서 정의를 할 수가 있다.
하지만 val로 변수를 선언하면 초기 선언 이후에 또 다른 값을 정의할 수 없다.
또한 타입을 명시하지 않아도 타입이 자동적으로 추론이 된다.
Primitive type(기본 유형)과 Reference type(참조 유형)을 구분하지 않는다.
var name = "홍길동" // var name: String = "홍길동"
name = "유관순"
val name1 = "홍길동"
name1 = "유관순" // name1에 오류 발생 (val은 불변)
Null에 관해
Kotlin에서는 타입을 명시적으로 작성하지 않아도 된다고 했지만
만약 변수에 null이 들어갈 수 있으면 타입을 명시적으로 작성한 뒤에 ?를 붙여줘야 한다.
Kotlin은 null이 들어갈 수 있는 타입을 완전히 다른 타입으로 간주하기에 꼭 명시해줘야 한다.
또한 Kotlin에는 Safe call, null 아님 단언, Elvis 연산자 등을 사용할 수 있다.
Safe call : 변수 뒤에 ?를 붙여 null이 아닐 때만 메소드 호출이 가능하게 한다. ex) str?.length
Elvis 연산자 : Elvis 연산자 앞 연산이 null이면 지정해 준 값으로 반환해준다. ex) str?.length ?: 0
null 아님 단언 : 변수 뒤에 !!를 붙여 null이 들어오지 않음을 단언한다. ex) str!!.length
var name: String? // name에는 null이 들어갈 수 있다.
val age : Int? = null // age에도 null이 들어갈 수 있다.
fun startsWithA1(str: String?): Boolean {
return str?.startsWith("A") ?: throw IllegalArgumentException("null이 들어왔습니다.")
}
fun startsWithA2(str: String?): Boolean? {
return str?.startsWith("A")
}
fun startsWithA3(str: String?): Boolean {
retrun str?.startsWith("A") ?: false
}
fun startsWithA4(str: String): Boolean {
return str!!.startsWith("A")
}