// ? null許容 (Nullable) var a: String = "abc" // Regular initialization means non-null by default a = null // compilation error var b: String? = "abc" // can be set to null b = null // ok // ?. 安全呼び出し (Safe Call) val a = "Kotlin" val b: String? = null println(b?.length) println(a?.length) // 不必要な安全呼び出し // !! Not-Null Assertion Operator // Nullableな変数を強制的にNon-Nullに変換。もし変数がnullだった場合は、例外が発生するので注意 // NPE-lovers の為の演算子? Null の時は、例外を発生させたいと言う強い意志を持って使う var a: Int? = 1 a = null val b = a!!.toString() // java.lang.NullPointerException // ?: エルビス演算子(Elvis Operator) var a: String? = "Hello" a = null val b: String = a ?: "1234567890" println(b?.length) // print 10