Kotlinの変数はそのままではnullを代入できない。型の宣言の最期に?を付けることでnullの代入が可能になる。
var str:String? = null
nullの代入を許す変数へのアクセスに?.を使うと変数がnullの場合nullを返してnullでない場合はその後に続くプロパティやメソッドを実行するように書ける。
var str:String? = null
println(str?.length) // nullを表示
nullの場合、nullの代わりになにか値を返すには?:を使う。
var str: String? = null
println(str?.length ?: -1) // -1を表示
nullの場合、例外を発生させ、null以外の場合はその値を返すには!!を使う。
var str: String? = null
println(str!!.length) // 例外を発生