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)      // 例外を発生