본문 바로가기
Kotlin

[Kotlin] val, var 관하여

by 열정적인 이찬형 2022. 6. 22.

val

  • Java에서 "final"과 같은 형태
  • 불변의 형태로 선언합니다.
  • 초기화를 진행하여 형식을 선언하면 변경하지 못합니다.
  • 변수가 객체에 주소를 참조하는 형식이면 해당 형식을 바꾸지 못하지만 내부의 데이터는 바꿀 수 있습니다.
fun main(args: Array<String>) {
    //val 형태의 String 변수 초기화 진행!
    val str = "valTest"
    println(str)
    //val 형태로 선언하였기 때문에 값 변경 불가능
    str = "valChange"       //Error 발생

    //val 형태의 객체의 주소를 참조하는 형태로 초기화 진행!
    val arr = arrayOfNulls<Int>(10)
    //val 내부의 값들은 변경 가능!
    arr[0] = 1
    arr[1] = 2

    //참조하는 형식의 형태는 변경 X
    arr = arrayOfNulls(20)      //Error 발생

}

var

  • 가변의 형태로 선언합니다.
  • 초기화를 진행하여 형식을 선언해도 변경할 수 있습니다.
  • 객체에 주소를 참조하는 형태에도 다시 형식을 선언하여 초기화시킬 수 있습니다.
fun main(args: Array<String>) {
    //var 형태의 String 변수 초기화 진행!
    var str = "valTest"
    println("val 변경전 값 : $str")
    //var 형태로 선언하였기 때문에 값 변경 가능
    str = "valChange"       //Error 발생 X

    println("val 변경후 값 : $str \n")
    //var 형태의 객체의 주소를 참조하는 형태로 초기화 진행!
    var arr = arrayOfNulls<Int>(10)
    arr[0] = 1
    arr[1] = 2

    println("val 배열 변경전 값 : " + arr[0] + " " + arr[1])
    println("val 배열 변경전 Size : " + arr.size + "\n")
    //var 선언으로 새롭게 초기화로 형식을 변경 가능!
    arr = arrayOfNulls(20)      //Error 발생 X
    arr[0] = 2
    arr[1] = 3

    println("val 배열 변경후 값 : " + arr[0] + " " + arr[1])
    println("val 배열 변경후 Size : " + arr.size)
}

 

결과


'Kotlin' 카테고리의 다른 글

[Kotlin] Map  (2) 2022.09.19
[Kotlin] when  (0) 2022.06.22

댓글