--> kotlin은 null이 될 수 있는 타입을 명시적으로 표시할 수 있음
val a: Int? = null
위의 코드에서 만약
if (s != null)
부분을 빼고 코딩했다면 nullSafe오류가 발생함 -> null에 대해 그만큼 철저함
이후 메소드를 다룰때 null을 안전하게 처리하기 위해 코틀린은 ?.연산자를 지원함
s?.length
// s가 null일 경우 s 뒤에 있는 확장함수가 실행되지 않음 --> 바로 null을 반환함
// s가 값이 있을 경우 s 뒤에 있는 확장함수가 정상적으로 실행됨
위의 코드에서 s에 ? 가 없다면 nullsafe오류가 발생함
?: 연산자는 좌항이 null이면 null을 반환함
그리고 코드를 작성하는 중에 해당 값이 null인 경우 default값을 주고 싶은 경우가 생김
(위의 ?.의 경우ㅡ, null이면 바로 null을 반환함 )
이런 경우에 ?: 연산자를 사용하면 됨
예제 1)
해당 코드의 경우
s 의 값이 null 이면 "NoName"이 반환되고,
s 의 값이 null이 아니면 s의 값이 반환됨
예제 1-1) -> 예제 1)과 같은 의미를 가지고 있음
예제 2) --> ?:의 우항으로 return이나 throw를 넣어줄 수도 있음