Kotlin의 모든 variables(변수) 혹은 data structure(데이터 구조)는 data type을 갖습니다.

data type을 선언해주어야 compiler(컴파일러)에서 이해하고 해석할 수 있습니다.

 

값을 변경할 수 있는 변수를 mutable variables이라고 합니다. 즉, var로 선언한 변수입니다.

(mutable은 영어단어로 '변할 수 있는, 잘 변하는' 이라는 뜻을 가지고 있습니다.)

 

반대로 한번 값을 할당하면 변경할 수 없는 변수를 immutable variables라고 합니다.

 

그럼 변수에 값을 할당함에 따라 Data type이 설정되는지 확인해 보겠습니다.

a 변수에 정수 1을 할당하였고, 정수 b에는 "문자"를 할당했습니다. 명시적으로 Data Type을 선언하지 않았지만 할당된 값의 Data type에 따라 변수의 Data type이 결정되었습니다.  

 

위 결과에서 정수는 int라고 출력이 되고 문자열은 class java.lang.String이라고 출력되었을까요?

엄밀히 말하면 둘다 class입니다. 차이점이 있다면, JVM에는 int와 integer가 있습니다.

int는 Primitive 자료형이라고 합니다. 즉, 데이터를 가지는 원시적 자료형을 뜻합니다.

그렇지만 Kotlin에서는 primitive 자료형인 Int에 많은 기능을 부여하여 Integer를 사용하지 않아도 되도록 하였습니다.

오히려 Integer를 사용하면 경우에 따라 예상치 못한 오류가 발생할 수 있습니다.

실제로 위 코드에 Integer로 선언한 부분 왼쪽에 !표가 있습니다.

마우스 커서를 이동해 올려보면 경고 문구가 나옵니다.

기억하세요. Kotlin에서는 Int를 사용합니다.

Kotlin에서 Int가 아닌 Integer로 판단되어야하는 경우 알아서 Integer로 Data type을 설정해줍니다.

코딩을 할때는 Int로 선언하고 사용하면 문제가 발생하지 않습니다.

예를 들어, Int는 primitive 자료형으로 null 값을 할당 할 수 없습니다.

 

그렇지만 Kotlin에서는 ? operator를 제공합니다. 즉 ?를 사용해 null이 될 수 있다고 알려줍니다.

? Operator

실행 결과 null을 할당했을때 a의 Data type도 null 입니다.

a 값을 출력한 결과가 null 인것은 알겠는데, a.javaClass 출력값이 왜 null 일까요?

a?.javaClass는 ? operator에 따라 a가 null이 아니면 a.javaClass를 a가 null 이면 null을 반환합니다.

 

a에 1을 할당했을때  Data type이 Int가 아니라 Integer입니다. 

왜 그럴까요? Kotlin에서 null 할당이 가능한 Integer class로 알아서 제공해준 결과입니다.

그렇지만, 개발자 입장에서는 Int와 Integer를 구분해서 사용할 필요가 없습니다.

Kotlin이 다른 언어에 비해서 사용하기 편한 이유 중에 하나입니다.

(이 외에도 많겠지요... ? operator의 존재도 마찬가지로 Kotlin이 사용하기 편한 이유가 되겠네요.)

'DEVELOPMENT > Kotlin' 카테고리의 다른 글

6. Kotlin, Basic Data Types - Characters  (0) 2024.02.25
5. Kotlin, Basic Data Types - Boolean  (0) 2024.02.25
4. Kotlin, Basic Data Types - Numbers  (0) 2024.02.23
2. Kotlin, Variables  (0) 2024.02.22
1. Kotlin "Hello, world!!!"  (0) 2024.02.22

+ Recent posts