코틀린에서는 기본적으로 아래 형식처럼 변수를 선언한다.
val/var name: Type
val
로 선언한 변수는 자바에서 final
키워드와 함께 선언하는 것처럼 추후에 할당한 참조의 변경을 막아야 할 때 사용하고, var
키워드는 추후 객체 변경이 필요할 때 사용한다.
val
은 변경 불가능한 참조를 저장하는 키워드이다. 즉, 참조 자체는 불변이지만 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다.
val → value
, var → variable
val languages = arrayListOf("Java")
languages.add("Kotlin")
var
키워드를 사용하면 할당된 참조를 변경할 수 있지만, 변수의 타입은 고정돼 바뀌지 않는다.
var answer = 42
answer = "this is error" // 컴파일 오류 발생
자바와 동일하게 산술 연산자(+
, -
, *
, /
, %
), 관계 연산자(>
, <
, ≥
, ≤
, ==
, ≠
), 대입 연산자(+=
, -=
, *=
, /=
, %=
), 단항 연산자(++
, --
), 논리 연산자(&&
, ||
, !
), 비트 연산자(shl
, shr
, ushr
, and
, or
, xor
, inv
)등이 있다.
추가적으로 코틀린은 고유의 연산자로 엘비스 연산자(elvis operator)를 갖고 있다.(?:
)
엘비스 연산자의 좌측 항이 null일 경우 엘비스 연산자 오른쪽 값을 반환하고, 그렇지 않을 경우 좌측 항을 그대로 반환하는 연산자이다.
var name: String? = null
var notNullName: String = name ?: "new name"
// var notNullName: String = if (name != null) name else "new name"
print(notNullName) // "new name"
엘비스 연산자를 통해 null-safe한 프로퍼티를 보장할 수 있다.