언어/Kotlin

[Kotlin] 코틀린 살짝 맛보기 - 타입과 변수

JJangGu 2022. 7. 10. 00:39

코틀린을 공부해보고자 합니다. 현재 회사에서 사용하고 있는 언어이지만 학습해본적이 없어 시작해보려고 합니다.

 

현재 간단하게 인프런의 기본개념 강의를 들은 상태에서 지금까지 써왔던 Java 와 다른 몇가지를 먼저 작성해보고 어떻게 코틀린을 사용해서 클린코드를 만들 수 있을지 이어서 작성해보려고 합니다 :)

 

먼저 변수에 대한 것을 살펴보겠습니다. 

 

// 가변
var number1 = 10L

// 불변
val number2 = 10L

// 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.

// 초기값이 없으면 타입 지정해줘야함
var number3: Int
val number4: Long
// Long, long -> 코틀린은 연산이 필요한 경우, 알아서 primitive type 으로 변환한다.

// nullable 하게 하려면 type 을 지정하고, ? 키워드를 붙여준다.
var number5: Long? = 1000L
number5 = null;

 

var 과 val 이 눈에 띄는데요, Java 에서 int, String 등 변수의 타입을 앞에 명시해주었던 것과는 다릅니다. 또한 명시적으로 타입을 작성해주지 않아도 타입이 추론됩니다. 단, 초기값이 없으면 변수명 뒤에 ':타입' 을 사용해서 타입을 지정해줘야 합니다.

 

또한 nullable 을 다루는 것이 Java 와 Kotlin 에서 굉장히 다른 지점입니다. 

 

타입뒤에 '?' 를 붙이는 것으로 변수가 nullable 한지 정해줄 수 있죠. 이는 변수를 지정할 때부터 null을 생각할 수 있게 해서 NPE 를 막을 수 있습니다.

 

val str: String? = "ABC"
// safety call : null 이 아니면 실행하고,
// null 이면 실행하지 않는다. (그대로 null)
println(str?.length)
// elvis 연산자 : 앞의 연산 결과가 null 이면 뒤의 값을 사용
println(str?.length ?: 0)

val person = Person("name", 10)
// nullable 인지 아닌지 모른다면 그것을 '플랫폼 타입' 이라 한다.
// 이 때는 런타임시 NPE 가 발생할 수 있다.
println(startsWithA(person.name))

 

null 을 미리 생각하고 개발을 할 수 있다는 점은 굉장한 장점으로 보입니다. 

 

그리고 var 과 val 에 대한 것도 이야기를 해보자면, var 은 변경가능 val 은 불변인 변수를 뜻합니다.

 

Java 에서 final 을 붙여주고 불변식을 까다롭게 관리해야됐던 것을 생각해보면 이것 또한 간단합니다.

 

이후로 클래스를 만들고 여러가지 코틀린의 모습을 보겠지만, val 을 넣어서 필드를 관리하는 것은 불변객체를 만드는데 유리해보였습니다.

 

Java 와 비교를 했을 때 변수를 정의하는 법과 null 을 체크하는 것만 보아도 간단한 코드로  챙길 수 있는 개념이 많습니다. 불변인지 가변인지를 정의하는 것과 타입추론, nullable 에 대한 것까지 편리하게 쓸 수 있어보입니다.

 

앞으로 먼저 이렇게 Kotlin 과 Java 를 간단히 비교해보면서 어떤 장점이 있는지 살펴보고 장점과 상세한 내용들을 살펴보도록 하겠습니다. 👍

'언어 > Kotlin' 카테고리의 다른 글

[Kotlin] 코틀린 살짝 맛보기 - 함수  (0) 2022.07.20
[Kotlin] 코틀린 살짝 맛보기 - 제어문  (0) 2022.07.20