Kotlinの型と変数
Kotlinの型と変数
- Javaのintやbooleanといったプリミティブはない
- Javaのような文末にセミコロンは必要ない
- 変数の宣言はvarとvalが存在する。varはmutable(値の変更可能)、valはimmutable(値の変更不可)となる
data class Person(val age :Int, val birth: java.time.LocalDate) val aLong : Long = 99999999L val bInt : Int = -4233 val cShort : Short = 100 val dByte : Byte = 1 val eFloat : Float = 1.1F val fDouble : Double = 3.14144 val gString : String = "Hello! World" val hChar : Char = 'C' val iBoolean : Boolean = true val jBigDecimal: java.math.BigDecimal = java.math.BigDecimal(3.2) val kPerson: Person = Person(15, java.time.LocalDate.parse("2005-12-04")) println("aLong=$aLong bInt=$bInt cShort=$cShort dByte=$dByte" + "eFloat=$eFloat fDouble=$fDouble gString=$gString hChar=$hChar " + "iBoolean=$iBoolean jBigDecimal=$jBigDecimal kPerson=$kPerson") // aLong=99999999 bInt=-4233 cShort=100 dByte=1eFloat=1.1 // fDouble=3.14144 gString=Hello! World hChar=C iBoolean=true // jBigDecimal=3.20000000000000017763568394002504646778106689453125 kPerson=Person(age=15, birth=2005-12-04)
Kotlinのvarとval
valは一度、定義すると代入不可
val x: Int = 42 // コンパイルできない x = aa
varは値の変更可能
var c: String = "Hello!" println(c) // "Hello!" c = "Hi!" println(c) // Hi!
varであっても、次のような宣言はnullが代入できない
var c: String = "Hello!" c = null
varでnullを代入場合は、Nullable型で宣言する
型宣言時に?を付与する
?(セーフガード)がない場合は、nullを代入できない
var c: String? = "Hello!" c = null
Kotlinのlet関数
- Lambda方式で記述する
- itは、Lambda内に渡される値。下記の例では、"Hi! Guys."にあたる
- 最後に定義した値が返却される
val sampleA: String? = "Hi! Guys." val sampleB = sampleA.let { "$it How are you?" } println(sampleB) // Hi! Guys. Hello! World"
次の例では、「sampleA?.let」と記述している
この場合、sampleAがNULLでない場合にのみlet内が処理される
つまり、「?.let」は変数の値がnullの場合は処理しない
val sampleA: Int? = null println(sampleA?.let { it * 5 }) // null
上記をJavaで記述すると下記のようになる
Integer sampleA = null; if (sampleA != null) { sampleA = sampleA * 5; } System.out.println(sampleA);