변수 선언 & 널 안정성

Ji·2021년 9월 24일

변수 선언

  • val은 "value"의 줄임말로, 초기값이 할당되면 바꿀 수 없는 변수를 선언할 때 사용
  • var 은 "variable"의 줄임말로 초깃값이 할딩된 후에도 값을 바꿀 수 있는 변수를 선언할 때 사용
val data1 = 10
var data2 = 10

fun main(){
    data1 = 20  //오류 발생
    data2 = 20
    println("data1: "+data1)
    println("data2: "+data2)
}

널 안정성(Null Safety)

  • Kotlin에서는 null값을 허용하기 위해선 자료형 뒤에 ?을 붙여야 함.
  • 객체에는 주소가 저장되며 이 주소로 메모리에 접근해서 데이터를 이용
  • 널 상태는 객체 주소를 갖지 못한 상태.
val data: String? = null
  • 위와 같이 널인 상태의 객체를 이용하면 널포인트 예외가 발생
var data1:Stirng = "ji"  //널 불허 변수 생성
data1 = null  //오류

var data2:String? = "ji"  //널허용 변수 생성
data2 = null  //성공
  • 물음표를 변수 생성시 선언해주게 되면 null 이 허용이되는 변수로 됨.
var data:String? = "ji"
var length = data?.length  //data 변수에 접근 시 ? 를 붙혀줌.
  • null 이 허용되도록 선언된 변수에 접근하고자 할 때에도 "?" 연산자를 사용하여 접근

엘비스 연산자(?:)

  • 널 값을 허용하지 않는 ?가 없는 값 혹은 변수에 널 값이 반환되는 경우를 대비하여 처리하는 구문
fun main(){
    var data:String? = "ji"
    println(data?.length ?: -10)  //null이 아님 ->2 출력
    data = null
    println(data?.length ?: -1)  //null값 -1 출력
}

참고
[Kotlin] 변수 선언 & 널 안정성|작성자 Ohsanrim

profile
공부방

1개의 댓글

comment-user-thumbnail
2022년 2월 4일

변수를 선언한다는 말이 멋지네요 null값을 허용하기 위해선 자료형 뒤에 ?을 붙여야 한다는 것을 명심하도록 하겠습니다. 널 불허 / 널 허용 말이 웃기네요 뫄하하 ^ㅁ^~~

답글 달기