実際に読んでみて良かった書籍について情報を発信していますので、
よろしければTwitterのフォローもお願いします。
#前提条件
Javaの基本的な構文について理解していると読みやすいです。
簡単にKotlinを実行するにはこちら
#Kotlinではnullを許容しないのが既定
Javaではnullが許容されていました。
String str = null;
null状態の変数に対してアクセスしようとすると、
NullPointerExceptionという例外が発生します。
そこで、Kotlinではこの例外を発生させないためにnullを許容しないのが既定となっています。
fun main() {
var name = "山田"
name = null
println(name)
}
このコードを実行すると
Null can not be a value of a non-null type String
というエラーが発生します。
どうしてもnullを許容したいときは型名の後方に「?」をつけると許容されます。
fun main() {
var name:String? = "山田"
name = null
println(name)
}
このコードを実行すると
null
と表示されます。
型名? をNullable型(null許容型)と言います。
##非null型への代入
Nullable型から非null型への代入はできません。
Nullable型にnullが代入されている可能性があるからです。
fun main() {
var name1:String? = "山田"
var name2:String= name1
println(name2)
}
このコードを実行するとエラーになります。
Type mismatch: inferred type is String? but String was expected
##セーフコール演算子
Nullable型のメンバーにアクセスするためには(?.)演算子を使います。
fun main() {
var name1:String? = "山田"
println(name1?.length)
var name2:String? = null
println(name2?.length)
}
このコードを実行すると
2
null
以上が表示されます。
##!!演算子
Nullable型を強制的に非null型に変換する!!演算子があります。
しかし、Nullable型の中身がnullでないことが明らかな場合での使用が推奨されます。
fun main() {
var name1:String? = "山田"
println(name1!!.length)
}
結果は以下の通りです。
2
中身がnullだと
Exception in thread "main" kotlin.KotlinNullPointerException
が発生してしまいます。