Kotlin Basic - 변수(variable), val, var
by 볼빵빵오춘기변수(variable)
- 값을 저장할 수 있는 공간이다.
- 공간에는 숫자, 문자, 문자열, 객체 등 다양한 데이터를 담을 수 있다.
- var, val 변수 선언 시 값을 바꿀 수 있는지 없는지에 따라 결정한다.
- 코틀린에서는 변수 선언 시 반드시 타입 또는 초기값을 함께 지정해야한다.
why? 코틀린은 타입 추론(Type Inference) 기능을 갖고 있기 때문에 초기값을 보면 자동으로 타입을 유추할 수 있지만, 아무 정보도 없으면 어떤 타입인지 알 수 없기 때문이다.
// 1. 초기값만 있는 경우 (타입 생략) → 가능 (타입 추론됨)
var name = "Alice" // 자동으로 String 타입으로 추론
val age = 25 // 자동으로 Int 타입으로 추론
var isKotlinFun = true // 자동으로 Boolean 타입으로 추론
// 코틀린이 알아서 변수의 타입을 결정한다.
// 2. 타입만 지정하고 초기값 없이 선언 → 불가능 (컴파일 에러 발생)
var name : String // 오류: 초기값 없이 선언할 수 없음
val age : Int // 오류: 초기화 없이 val 사용 불가
// 3. 타입과 초기값을 모두 지정 → 가능
var name : String = "Alice"
val age : Int = 25
// 명시적으로 타입을 써주는 경우도 있다.
// 가독성을 위해, 또는 타입이 복잡한 경우 자주 사용한다.
var, val 변수 선언 키워드
var (mutable variable, 변경 가능)
- var로 선언한 변수는 값을 나중에 변경할 수 있다.
- 자바의 일반 변수와 비슷한 개념이다.
var name = "Alice"
name = "Bob" // 값 변경 가능
val (read-only variable, 읽기 전용)
- val로 선언한 변수는 처음 한 번만 값을 지정할 수 있고, 이후에는 변경할 수 없다.
- 자바의 상수적인 기질을 갖고 있다.
val age = 20
// age = 25 // 오류 발생: val로 선언한 변수는 값을 바꿀 수 없음
cf
1. 코틀린은 원칙적으로 선언과 동시에 초기화해야 하지만, 예외도 있다.
더보기
// lateinit (var만 가능, 클래스 안에서 사용)
lateinit var name: String
fun setup() {
name = "Alice" // 나중에 초기화
}
// by lazy (val만 가능, 초기화 지연)
val message: String by lazy {
println("초기화 중...")
"Hello Lazy"
}
2. 코틀린에서는 데이터 타입에 기본값이 없는가? (자바 vs 코틀린 기본값 비교)
더보기
* 자바에서의 기본값
- 자바에서는 클래스의 필드(멤버 변수)를 선언하면, 자동으로 기본값이 할당된다.
- int → 기본값 0, boolean → 기본값 false, Object 기본값 → null ,…
⇒ 자바는 명시적으로 초기화하지 않아도 자동으로 디폴트 값을 준다. (클래스 필드에 한해서)
public class Person {
int age; // 자동으로 0으로 초기화됨
}
* 코틀린에서의 기본값
코틀린에서는 로컬 변수는 반드시 초기화하고 나서 사용해야 한다.
초기화하지 않으면 컴파일 에러가 발생한다.
⇒ 자바처럼 자동으로 기본값이 들어가지 않는다.
fun main() {
val age: Int
println(age) // 오류: 초기화하지 않아서 사용 불가
}
왜 자동으로 기본값을 주지 않을까?
코틀린은 명확하고 안전한 프로그래밍을 지향하기 때문에, 개발자가 명시적으로 값을 설정하도록 요구한다.
이런 규칙 덕분에 널 포인터 예외나 미초기화 오류를 줄일 수 있다.
참고
- https://www.youtube.com/watch?v=xGZqONsfhrI&list=PLilcDFW2bfcouUCLL80-ABoatrcKynq7N&index=7
- https://github.com/chungi21/Kotlin_Basic1/blob/master/src/sec/exam02/exam01.kt
'👩🏻💻 About 프로그래밍 > Kotlin' 카테고리의 다른 글
Kotlin Basic - typealias, !!, :?, ?. (0) | 2025.06.08 |
---|---|
Kotlin Basic - 코틀린의 기본 자료형과 저장장소(자바와 비교) (1) | 2025.06.05 |
Kotlin Basic - 자료형(기본자료형, Nullable, Any, Unit, Nothing) (0) | 2025.06.05 |
Kotlin Basic - fun main() (0) | 2025.06.04 |
Kotlin Basic - 코틀린의 등장 배경, 실행 가능한 플랫폼, 장점 (3) | 2025.06.03 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기