Kotlin データ型

Kotlinでは、変数の型はその値によって決まります。

val myNum = 5             // Int
val myDoubleNum = 5.99    // Double
val myLetter = 'D'        // Char
val myBoolean = true      // Boolean
val myText = "Hello"      // String

ただし、前の章で学んだように、型を指定することも可能です。

val myNum: Int = 5                // Int
val myDoubleNum: Double = 5.99    // Double
val myLetter: Char = 'D'          // Char
val myBoolean: Boolean = true     // Boolean
val myText: String = "Hello"      // String

型を指定する必要がある場合もあれば、指定しなくてもよい場合もありますが、異なる型が何を表すかを知っておくと良いでしょう。型を指定する必要がある場面については、後ほど詳しく学びます。

データ型は以下のグループに分かれます:

  • 数値型
  • 文字型
  • ブール型
  • 文字列型
  • 配列型

数値型

数値型は二つのグループに分かれます:

  • 整数型: 整数値(例: 123 や -456)を格納します。有効な型は Byte、Short、Int、Long です。
  • 浮動小数点型: 小数部分を含む数値を格納します。Float と Double の二種類があります。

数値型を指定しない場合、整数値は通常 Int として、浮動小数点数は Double として返されます。

整数型

  • Byte: -128 から 127 までの整数値を格納できます。メモリを節約するために、値が -128 から 127 の範囲であることが確実な場合に使用します。
  • val myNum: Byte = 100
    println(myNum)
    
  • Short: -32768 から 32767 までの整数値を格納できます。
  • val myNum: Short = 5000
    println(myNum)
    
  • Int: -2147483648 から 2147483647 までの整数値を格納できます。
  • val myNum: Int = 100000
    println(myNum)
    
  • Long: -9223372036854775807 から 9223372036854775807 までの整数値を格納できます。Int では値が収まらない場合に使用します。オプションで、値の末尾に「L」を付けることができます。
  • val myNum: Long = 15000000000L
    println(myNum)
    

    Int と Long の違い

    整数値が 2147483647 までであれば Int ですが、それを超えると Long として定義されます。

    val myNum1 = 2147483647  // Int
    val myNum2 = 2147483648  // Long
    

    浮動小数点型

    浮動小数点型は小数を含む数値を表します。例えば、9.99 や 3.14515 です。Float と Double のデータ型が小数点数を格納できます。

    • Float: 小数点数の精度は約6〜7桁です。値の末尾に「F」を付ける必要があります。
    • val myNum: Float = 5.75F
      println(myNum)
      
    • Double: 小数点数の精度は約15桁です。計算には Double を使用する方が安全です。
    • val myNum: Double = 19.99
      println(myNum)
      

    Float または Double を使用するべきか?

    浮動小数点値の精度は、小数点以下の桁数を示します。Float の精度は約6〜7桁ですが、Double 変数の精度は約15桁です。そのため、大半の計算には Double を使用する方が安全です。

    また、Float 型の値には末尾に「F」を付ける必要があります。

    科学的表記

    浮動小数点数は、10のべき乗を示す「e」または「E」を使って科学的表記にすることもできます。

    val myNum1: Float = 35E3F
    val myNum2: Double = 12E4
    println(myNum1)
    println(myNum2)
    

    ブール型

    ブール型は、値が true または false のいずれかしか取れません。

    val isKotlinFun: Boolean = true
    val isFishTasty: Boolean = false
    println(isKotlinFun)   // true を出力
    println(isFishTasty)   // false を出力
    

    文字型

    Char データ型は単一の文字を格納するために使用します。文字は単一引用符で囲む必要があります。例えば、「'A'」や「'c'」です。

    val myGrade: Char = 'B'
    println(myGrade)
    

    Java とは異なり、Kotlin では ASCII 値を使用して特定の文字を表示することはできません。Java では値 66 が「B」を出力しますが、Kotlin ではエラーになります。

    val myLetter: Char = 66
    println(myLetter) // エラー
    

    文字列型

    String データ型は文字列(テキスト)のシーケンスを格納するために使用します。文字列はダブルクォーテーションで囲む必要があります。

    val myText: String = "Hello World"
    println(myText)
    

    配列型

    配列は、複数の値を一つの変数に格納するために使用され、各値のために個別の変数を宣言する代わりに利用します。

    型変換

    型変換とは、あるデータ型の値を別の型に変換することです。

    Kotlin では、数値型の変換は Java とは異なります。例えば、以下のコードでは Int 型を Long 型に変換することはできません。

    val x: Int = 5
    val y: Long = x
    println(y) // エラー: 型が一致しません
    

    数値型を別の型に変換するには、以下の関数のいずれかを使用する必要があります: toByte()toShort()toInt()toLong()toFloat()toDouble()、または toChar() です。

    val x: Int = 5
    val y: Long = x.toLong()
    println(y)