정리
1. 모든 변수는 var/ val을 붙여 주어야 한다.
- var : 변경 가능
- val : 변경 불가능(read-only)
2. 타입을 명시적으로 작성하지 않아도, 타입이 추론된다.
3. Primitive Type과 Reference Type을 구분하지 않아도 된다.
4. Null이 들어갈 수 있는 변수는 타입 뒤에 ? 를 붙여주어야 한다.
: 아예 다른 타입으로 간주된다.
5. 객체를 인스턴스화 할 때 new를 붙이지 않아야 한다.
1. 변수 선언 키워드(var / val)
long number1 = 10L;
final long number2 = 10L;
Java에서 long과 final long의 차이는 이 변수가 가변인가 불변인가의 차이다.
즉, 처음 값을 할당 받고 나서 다시 한 번 바꿔줄 수 있는지 아니면 한 번 값을 지정해주고 나면 값을 변경해줄 수 없는지의 차이이다.
코틀린에서는 바꿀 수 있는 코드 = var / 바꿀 수 없는 변수 = val 로 진행한다.
즉 위의 코드를 아래와 같이 선할 수 있다.
var number1 = 10L
val number2 = 10L
var = variable의 약자 / val = value의 약자
코틀린에는 모든 변수에 수정 가능 여부(var / val)를 명시해줘야한다.
추가적으로 코틀린에서는 타입을 작성하지 않아도 컴파일러가 자동적으로 추론해주기 때문에 의무적으로 작성하지 않아도 되지만 var number1: Long = 10L콜론을 이용해서 명시할 수도 있다.
초기 값을 지정하지 않는다면?
초기 값을 지정하지 않는 경우 var number1 이라고만 쓰면 컴파일러가 타입을 추론하지 못하기 때문에 var number1: Long처럼 명시적으로 타입을 작성해줘야한다.
하지만 아직 초기화 하지 않은 변수를 사용하려고 한다면 에러가 발생한다(초기화되지 않았기 때문에)
var number: Int
println(a) // 컴파일 에러 발생. Variable 'a' must be initialize
val 컬렉션에는 element를 추가할 수 있다.
=> JAVA에서도 LIST를 만들 때 컬렉션 자체는 못바꾸지만 값은 추가할 수 있는 것처럼 Kotiln도 가능하다.
final List<Integer> numbers = Arrays.asList(1, 2);
numbers = Array.asList(2, 3); // final이라 불가
numbers.add(5); // 값 추가
💡Tip. 코드를 클린하게 하기 위해서는 모든 변수를 우선 val로 만들고 꼭 필요한 경우 var로 변경하면 디버깅하기도 쉽고 깔끔해진다.
2. Primitive Type(원시타입)
Java에서는 아래와 같이 되어있다고 하더라도 코틀린에서 똑같이 사용할 수 있다.
---- Java ---- → ---- Kotlin ----
long number1 = 10L; → var number1 = 10L
Long number3 = 1_000L; → var number1 = 1_000L
Java에서는 long은 원시타입, Long은 참조타입으로 다르게 구분된다.
따라서 연산을 할 때는 Long을 사용하면 boxing과 unboxing이 사용되면서 불필요한 객체 생성이 된다.
그러나 Kotlin에서는 그런 것이 없다. Long으로 선언되어있다고 하더라도 실제로 연산할 때는 코틀린이 알아서 내부적으로 변경해서 연산하도록 해준다. 즉, 프로그래머가 boxing / unboxing을 고려하지 않아도 되도록 Kotlin이 알아서 처리해준다.
실제로 디컴파일 해보면 된다.
인텔리제이에서 Tools > Kotiln > Show kotiln bytecode를 눌러주면 코틀린이 자바코드로 변경된걸 볼 수 있다.
3. Nullable 변수
Java에서는 Long number3 = 1_000L;이라는 것은 null이 들어갈 수 있는 것을 의미한다.
다만 Kotlin에서는 기본적으로 모든 변수에 null을 넣을 수 없다.
따라서 타입을 지정해주고, 물음표를 이용하여 해당 타입에 null이 들어갈 수 있음을 명시해야한다.
var number3: Long? = 1_000L
number3 = null
4. 객체 인트턴스화
Person person = new Person("연");
Java에서는 위와 같이 객체 인스턴스를 생성할 때 new라는 키워드를 사용해줘야 한다.
var person = Person("연이")
코틀린에서는 객체 인스턴스화할 때 new를 쓰지 않아야 한다.
'지식을 쌓아보자 > Kotlin' 카테고리의 다른 글
| [기초] 코틀린에서 조건문을 다루는 방법 (0) | 2025.12.14 |
|---|---|
| [기초] 코틀린에서 연산자를 다루는 방법 (0) | 2025.12.14 |
| [기초] 코틀린에서 Type을 다루는 방법 (0) | 2025.12.11 |
| [기초] 코틀린에서 null을 다루는 방법 (0) | 2025.12.10 |
| 코틀린 입문 (0) | 2025.12.07 |