Kotlinを勉強し始めたのでメモ。
KotlinはNull安全、つまりNull非許容が基本であるということ。
何が嬉しいのか
Null非許容で嬉しいのは、コンパイル時点でNullが入り込むのを防いでくれるから。
基本Null許容する言語、Javaなどの場合はプログラム実行時に意図しないNull混入によって、"Null pointer Exception(通称ぬるぽ)"が発生する可能性がある。
val i: Int = 200
val j: Int = i // nullじゃないので代入OK
val k: Int? = null // ?をつけるとNullable(Null許容型になる)
val l: Int = k // Nullableな変数 k はNull非許容 l への代入不可。Nullが入る可能性を排除している。
Nullableを安全に使用するには safe call
safe callを使う。
Nullable型にnullが入っていれば処理を実行しないようにできる。
// safe call;Nullable型がnullでない場合のみ値にアクセス
val value = null //ここに値が入る場合は下記のtoString()は実行される。
val str: String? = value?.toString() //toString()は実行されないのでエラーを防げる。
println(str) //null
smart cast
参照する値がnull出ないことを確実に知らせておけば、
非Nullの型として扱ってくれる機能をsmart castという。
// Trueならsmart castされる
if (k != null) {
println(k.toString()) //safe call しなくてもif文中ではIntとして扱える(?がいらない)
}
?:演算子
println(k ?: 0) //nullなら0を返す
強制非Null変換
// 非Nullへの変換、極力使わない方がいい。
var str: String? = "aefe"
println(str!!.length)