- 코틀린은 변수 선언 시 var, val을 사용한다.
- var : Variable, 수정 가능한 가변 변수
- val : Value, Read-Only인 불변 변수 (Java의 final )
// Kotlin
var number1 = 10L // 가변
number1 = 20L
val number2 = 10L // 불변
numbre2 = 20L // 에러
// Java
long number1 = 10L;
numbre1 = 20L;
final long number2 = 10L;
number2 = 20L;
- 코틀린은 타입을 컴파일 시점에 추론하기 때문에 타입을 작성하지 않아도 되지만,
변수 : 타입
으로 지정하는 것이 가능하다.
// Kotlin
var number1: Int = 10
// Java
int number1 = 10
- 값을 초기화하지 않은 변수는 컴파일러가 타입을 추론하지 못하기 때문에 에러가 발생한다. 따라서, 초기화 하지 않은 변수를 사용하기 위해선 타입을 지정한다.
- val의 경우 불변 변수 이기 때문에 값을 대입하는 것이 불가능하지만, 초기화가 되지 않은 val에 대해서 최초 1번 값을 초기화 하는 것이 가능하다. (자바와 동일)
var number1 // 타입 추론 불가
var number1: Int // int로 타입 추론 가능
val number2: Int // int로 타입 추론 가능
number2 = 10 // 가능
- 프리미티브 타입(원시 타입)과 래퍼런스 타입을 구분하지 않고 동일하게 사용한다.
- 코틀린이 박싱, 언박싱을 내부에서 알아서 처리해서 연산이 필요한 경우 프리미티브 타입으로 변환해 계산한다.
// Java
int number1 = 10;
Integer number2 = 10;
// Kotlin
var number1: Int = 10
var number2: Int = 10 // 동일한 코드
- 코틀린은 기본적으로 모든 변수가 null을 넣을 수 없도록 설계되어있다. null을 넣을 수 있는 변수를 사용하고 싶다면
변수 : 타입?
을 사용한다. - 타입?와 타입은 타입으로서의 역할은 동일하나 다르게 취급된다.
var number1: Long = 10
number1 = null //에러
var number2: Long? = 10
number2 = null // 에러 아님
- 객체를 인스턴스화 하는 경우 new 키워드를 사용하지 않는다.
// Kotlin
var person: Person("zayson")
// Java
Person person = new Person("zayson");
📄 Reference
반응형