Kotlinの型と変数

Kotlinの型と変数

  1. Javaのintやbooleanといったプリミティブはない
  2. Javaのような文末にセミコロンは必要ない
  3. 変数の宣言は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関数

  1. Lambda方式で記述する
  2. itは、Lambda内に渡される値。下記の例では、"Hi! Guys."にあたる
  3. 最後に定義した値が返却される
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);