빠르게 진도 나가는 Kotlin 기초강의 3번째 시간입니다~
자바에서는 널을 넣어도 상관없었다.
String pongPong = "퐁퐁"
pongPong = null
다음껄 확인해보자
var myName:String = "퐁퐁"
myName = null //에러
똑같은 구문이지만 에러가 난다. Kotlin에선 Null을 받으려면 ?를 써야한다.
//nullable이다.
var myName:String? = "퐁퐁"
myName = null //에러
이제 SafeCall을 알아보자.
SafeCall은 Null이 아닐때만 액션을 취할수있게 해준다.
val str:String? = null
val upper = str?.toUpperCase()
var number:Int? = null
var result = number?.plus(37)
?가 Elvis머리와 같다고 탄생한 Elvis Expression이다.
val str:String? = null
//Elvis Expression
val upper = str?.toUpperCase() ?: "초기화 하세요!"
var result = number?.plus(37) ?: 51
//지연초기화
// lateinit var 변수명:타입
//변수가 아닌 클래스에 많이 쓰인다.
lateinit var Person:String // 참조형에만 사용이 가능하다.
lateinit var myName:String? //에러. Null값이 허용되지않는다.
/
lateinit var person : Person // 초기화를 지연시켰다.
person = Person() //이제 초기화 시켰다. 메모리에 올라감.
person.address = "취킨"
class Person{
var name = ""
var age = ""
var address =""
var tel = ""
}
//값이 바뀌지않는 초기화: 읽기전용
val age by lazy{Person}
val hong : Int by lazy {
println("아프리카 태생 국민이")
100
}
fun main() {
val account = Account()
println(account.balance)
println(account.balance)
}
//ㅣlazy 의 {}은 변수가 처음 사용될때 한번 호출되며, 마지막값이 초기값으로 할당
//아프리카 태생 국민이
//100
//100