データ型とリテラル
主なデータ型とリテラルについて記載します。
数値型
- Double - 8バイト
- Long - 8バイト
- Float - 4バイト
- Int - 4バイト
- Short - 2バイト
- Byte - 1バイト
IEC 80000-13:2008 で 1バイト(B)=8ビット(bit)となっています。もう1バイトは8ビットじゃないかもしれないよ、と言わなくていいです。
符号なしの UInt などは Kotlin 1.3 以降で利用可能となります。
現在の Kotlin のバージョンをプリントするには KotlinVersion.CURRENT が使えます。
fun main() { println(KotlinVersion.CURRENT) // 1.3.31 }
リテラル
- 10進数 - そのまま記載 (例. 123 など)。Long にするときは L をつける (例. 123L)。
- 16進数 - 0x ではじめる (例. 0xAB など)。
- 2進数 - 0b で始める (例. 0b1101 など)。
fun main() { val b = 0b1001 print(b) }
実行結果
9
尚、リテラル中のアンダースコア (_) は無視されますので、バイト区切りやビットの区切りの可読性向上のためにつかえます。
fun main() { val a1 = 0xDEADBEEF val a2 = 0xDEAD_BEEF println("a1 = $a1") println("a2 = $a2") }
下で説明する文字列テンプレート (string template) を使って、文字列中に変数を埋め込んでいます。
実行結果は a1、a2 ともに同じです。
a1 = 3735928559 a2 = 3735928559
尚、16進数のまま表示するには、format が使えます。
fun main() { val a1 = 0xDEADBEEF val a2 = 0xDEAD_BEEF println("a1 = %08X".format(a1)) println("a2 = %08X".format(a2)) }
a1 = DEADBEEF a2 = DEADBEEF
文字と文字列
- Char - 文字
- String - 文字列
Unicode の文字コード指定は \u で指定します。
fun main() { val c1: Char = 'A' val c2: Char = '\u3042' println("$c1 $c2") }
A, あ
文字列で複数行を指定するリテラルは、二重引用符を三個重ねて書きます。
fun main() { val s = """ Hi! How are you? """ println(s) }
この実行結果は次のようになります。
Hi! How are you?
複数行を扱うのは問題ありませんが、空白があるためインデントされています。 trimIndent で行毎の無駄なインデントと、最初と最後の改行を取り去ることができます。
fun main() { val s = """ Hi! How are you? """.trimIndent() println(s) }
実行結果
Hi! How are you?
文字列をテンプレートとして、文字列内に変数に割り当てられた文字を挿入するには、${変数} とします。これを文字列テンプレート (string template) といいます。
fun main() { val n = "Nick" print("Hi, ${n}!") }
Hi, Nick!
そのほか、文字列内では標準的なエスケープシーケンスは入力可能です。 また、文字列の接続を行うのに + の演算子が使えたりします。