자바 개발자를 위한 코틀린 입문
1강. 코틀린에서 변수를 다루는 방법
JAVA에서 long 과 final long의 차이 -> 가변인가, 불변인가(read-only)
var -> 가변 - 값이 변경될 수 있는 변수 (varialbe의 약자)
val -> 불변 - 값이 변경될 수 없는 변수 (value의 약자)
코틀린에서는 모든 변수에 수정 가능 여부(var / val)를 명시해주어야 한다.
코틀린에서는 타입을 자동으로 컴파일러가 추론해 주기 때문에 타입을 의무적으로 작성하지 않아도 되지만 원한다면 변수: 타입
으로 작성할 수 있다.
초기값을 지정해주지 않는 경우?
var
타입을 정의하지 않으면 오류가 난다.
타입을 정의하면 오류는 사라지지만 값을 선언하지 않고 사용하려고 하면 오류가 난다.
val
마찬가지로 값이 선언되어있지 않은 상태에서 타입을 정의해주지 않거나
변수를 사용하려고 하면 오류가 난다.
val
컬렉션에는 element를 추가할 수 있다.
간단한 TIP
모든 변수는 우선 val로 만들고 꼭 필요한 경우 var로 변경한다.
자바에서 long은
primitive type / Long
은 reference type이다.
코틀린에서는 모두 Long
을 사용한다.
-> primitive type과 reference type의 구분이 없다.
Kotlin 공식 문서
숫자, 문자, 불리언과 같은 몇몇 타입은 내부적으로 특별한 표현을 갖는다.
이 타입들은 실행시에 primitive value로 표현되지만, 코드에서는 평범한 클래스처럼 보인다.
Long
타입으로 합쳐져 있지만 만약 연산을 하게 될 경우에는 코틀린이 알아서 똑똑하게 상황에 따라서는 내부적으로 primitive type으로 바꿔서 적절히 처리를 해준다.
인텔리제이 Tools > Kotlin > Show Kotlin Bytecode
Decompile 버튼을 누르면 자바 코드로 변경해준다.
long
으로 primitive type으로 들어가진 것을 알 수 있다.
💡 즉, 프로그래머가 boxing/ unboxing을 고려하지 않아도 되도록 Kotlin이 알아서 처리 해준다.
코틀린에서는 자바와 다르게 'null이 들어갈 수 있는'을 다르게 표현한다.
코틀린은 기본적으로 모든 변수를 null이 들어갈 수 없게끔 설계해놓는다.
null이 변수에 들어갈 수 있다면 타입?
를 사용해야 한다.
객체 인스턴스화 할 때에는 자바와 달리 new
키워드 없이 객체를 생성해야한다.
📑 출처
- 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) (인프런/최태현)