言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

Kotlin辞典

  1. トップページ
  2. Kotlin辞典
  3. 基本データ型

基本データ型

対応: Kotlin 1.0(2016)

Kotlin の基本データ型は Int・Long・Double・Float・Boolean・Char・Byte・Short の8種類です。すべてオブジェクトとして扱われますが、コンパイル時にプリミティブ型に最適化されます。

構文

// 型注釈で明示するか、リテラルから型推論されます
val i: Int = 42
val l: Long = 1_000_000L // L サフィックスで Long になる
val d: Double = 3.14
val f: Float = 3.14f // f サフィックスで Float になる
val b: Boolean = true
val c: Char = 'A' // 文字はシングルクォートで囲む

型一覧

ビット幅値の範囲 / 概要
Byte8 bit-128 〜 127 の整数です。
Short16 bit-32,768 〜 32,767 の整数です。
Int32 bit-2,147,483,648 〜 2,147,483,647 の整数です。整数リテラルのデフォルト型です。
Long64 bit約 ±9.2 × 10¹⁸ の整数です。リテラルは末尾に『L』を付けます。
Float32 bit単精度浮動小数点数です。リテラルは末尾に『f』を付けます。
Double64 bit倍精度浮動小数点数です。小数リテラルのデフォルト型です。
Boolean-『true』または『false』のみを持ちます。
Char16 bitUnicode の単一文字です。シングルクォートで表します。

サンプルコード

sample_basic_types.kt
fun main() {
    // 整数型の例
    val age: Int = 25
    val population: Long = 125_000_000L // アンダースコアで桁を区切れる
    println(age) // 『25』と出力される
    println(population) // 『125000000』と出力される

    // 浮動小数点型の例
    val pi: Double = 3.14159
    val weight: Float = 65.5f
    println(pi) // 『3.14159』と出力される
    println(weight) // 『65.5』と出力される

    // Boolean 型の例
    val isKotlin: Boolean = true
    val isJava = false // 型推論で Boolean になる
    println(isKotlin && !isJava) // 『true』と出力される

    // Char 型の例
    val letter: Char = 'K'
    val code = letter.code // Unicode コードポイントを取得する
    println(letter) // 『K』と出力される
    println(code) // 『75』と出力される

    // 型変換(数値型間の変換)は明示的に行う
    val num: Int = 42
    val numLong: Long = num.toLong()
    val numDouble: Double = num.toDouble()
    println(numLong) // 『42』と出力される
    println(numDouble) // 『42.0』と出力される
}

コンパイルして実行すると次のようになります。

kotlinc sample_basic_types.kt -include-runtime -d sample_basic_types.jar
java -jar sample_basic_types.jar
25
125000000
3.14159
65.5
true
K
75
42
42.0

よくあるミス

数値型間の代入や『Char』型の比較では、型の不一致がコンパイルエラーになります。

NG パターン(コンパイルエラーになる)
fun main() {
    val score: Int = 100
    // val bigScore: Long = score // NG: Int は Long に暗黙変換されない
    // val weight: Float = 65.5 // NG: f サフィックスなしは Double
    val c: Char = 'A'
    // if (c == 65) { } // NG: Char と Int を == で比較できない
    val result = 7 / 2 // NG: 整数同士の割り算は小数にならない(結果は 3)
}
sample_basic_types_mistakes.kt
fun main() {
    val score: Int = 100
    val bigScore: Long = score.toLong() // toLong() で明示変換する
    val weight: Float = 65.5f // f サフィックスが必要
    val c: Char = 'A'
    if (c.code == 65) { println("A です") } // .code でコードポイントを取り出す
    val result = 7 / 2 // 3(切り捨て)
    val correct = 7.0 / 2 // 3.5(Double として計算)
    println(result)
    println(correct)
}

コンパイルして実行すると次のようになります。

kotlinc sample_basic_types_mistakes.kt -include-runtime -d sample_basic_types_mistakes.jar
java -jar sample_basic_types_mistakes.jar
A です
3
3.5

概要

Kotlin の数値型は Java とは異なり、型間の暗黙的な変換を行いません。『Int』を『Long』に代入するような場合も、必ず『toLong()』などの変換メソッドを明示的に呼び出す必要があります。これによりサイレントな精度ロスや型ミスマッチを防いでいます。

数値リテラルにはアンダースコアを挿入して桁を見やすくする書き方も使えます。変数宣言の基本は『val / var』を、文字列については『String テンプレート』を参照してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。