자료형을 명시하지 않고 선언
var 변수명 = 값
타입 추론(Type inference)
- 이 경우에는 값을 보고 이 변수의 자료형이 무엇인지 알아서 판단해서 정해준다.
- 한 번 변수에 값을 할당하면 해당 변수에는 처음에 담았던 값과 같은 자료형들만 담을 수 있다.
- 변수를 선언만 할 경우에는 이 방법을 사용할 수 없다.
자료형을 명시하면서 선언
var 변수명 : 자료형 = 값 // null을 가질 수 없음
var 변수명 : 자료형? = 값 // null을 가질 수 있도록, 세이프콜
- 한눈에 변수의 자료형이 무엇인지 알 수 있으므로 가독성이 좋으니 이 방법을 많이 쓰도록 하자.
자료형을 명시하지 않고 선언
val 상수명 = 값
자료형을 명시하면서 선언
val 상수명 : 자료형 = 값
val mNumberList = mutableListOf<Int>(1, 2, 3)
mNumberList.add(4) # 가능하다!!
println(mNumberList) // [1, 2, 3, 4]
컴파일 시점 상수 선언
const val 상수명 = 값
자바에는 기본 자료형과 이 기본 자료형을 객체로 다루기 위해 사용하는 클래스인 래퍼 클래스(Wrapper Class)가 있는데, 코틀린에서 쓰는 자료형은 이 둘을 합친 역할을 한다고 보면 된다.
fun main() {
val a: Int = 128
val b: Int = 30 // -128 ~ 127 범위에 있는 값
val c: Int? = a
val d: Int? = a
val e: Int? = c
println(c == d) // true
println(c === d) // false
println(c === e) // true
val f: Int? = b
val g: Int? = b
val h: Int? = f
println(f == g) // true
println(f === g) // true
println(f === h) // true
}
제가 잘못 이해해서 그림이 잘못 되었다면 알려주세요!
만약 숫자로 이루어진 문자열을 정수형이나 실수형으로 바꾸고싶다면?
-> 자료형 변환
var b = "1" var c = b.toInt() // c에 Int형 1이 저장됨 var d = b.toFloat() // d에 Float형 1.0이 저장됨
문자열에 다른 변수를 포함하고싶다면?
- $변수명
var e = "Summer" var f = "My name is $e. Nice to meet you" // My name is Summer. Nice to meet you