Kotlinスタートブックを読んでいくよ【2日目】
第4章 基本的な文法
変数と基本データ型とそのリテラル
型 | ビット幅 |
---|---|
Double | 64 |
Float | 32 |
Long | 64 |
Int | 32 |
Short | 16 |
Byte | 8 |
- Doubleを表現するリテラルは, 123.4e2のような形で表現することができます.
- 0xを頭につけることで16進数, 0bを付けることで2進数を表現することができます.
その他の基本形
型 | 種類 |
---|---|
Boolean | 真偽値 |
Char | 文字 |
String | 文字列 |
- Booleanはtrueかfalseの2値しかとらない
- Charは1文字を表す(シングルクォートで表す)
- Stringは文字列(ダブルクオートで表す)
変数
変数の宣言は以下のように行う.
val 変数名: 型 = 式 var 変数名: 型 = 式
- valはimmutableであるため, 1度代入した後は変更ができない.
- 再代入をしたい場合は, 変数をvarで宣言する.
- 原則として, valを使用するべき,
型推論
val name: String = "d(^_^o)"
という記述は,
val name = "d(^_^o)"
と書くことができる.
様々なオブジェクト
文字列
- 文字列はimmutableである.
- Stringリテラルは, ダブルクオートで囲った0文字以上の文字列のこと.
- 以下のようなメソッドが定義されている.
名前 | 仕様 |
---|---|
length | 文字列の長さを返す |
capitalize | 1文字目を大文字にして返す |
isBlank | 空白 or 空文字であるかを判定する |
- 文字列リテラル内に${式}と記述することで, その場所に式が評価された値が埋め込まれる.(Stringテンプレート)
- ダブルクオーテーション3つ(“”“)で囲むことで, raw stringとなる.
- raw string内でもStringテンプレートは使用可能である.
- raw stringでは, 先頭に|を置いて目印にすることが多い.
""" | aaaa | bbbb | cccc """.trimMargin()
trimMargin()は, |をエスケープする.
fun String.trimMargin(marginPrefix: String = "|"): String (source)
配列
配列はクラスArrayで表現される. - 配列の生成方法
val arrays = arrayOfNulls<Int>(5) // デフォルトの値がNullの要素数5である配列 val strs = arrayOf("aaa", "bbb", "ccc") // 引数に指定した要素を持つ配列を生成する
- 配列のサイズは, プロパティsizeを使用する.
arrays.size // => 5
- 添字は0-indexである.
- ボクシングのオーバーヘッドが気になる場合は, intArrayOfのような関数を使うと良い.
リスト
- リストは順序付きのコレクション. listOfで生成.
val ints: List<Int> = listOf<Int>(1, 2, 3) println(ints.size) // => 3 println(ints[2]) // => 3
- リストは要素の変更はできない. 通常のListはimmutableである.
- mutableなリストは, MutableListというインタフェースで表現される.
val ints: MutableList<Int> = mutableListOf(1, 2) ints[1] = 3 println(ints) // => [1, 3]
セット
セットは集合を表すコレクション
val im_set: Set<Int> = setOf(1, 2, 2, 3, 3, 1) println(im_set) // => 1, 2, 3 val m_set: MutableSet<Int> = mutableSetOf(1, 2, 2, 3, 3, 1) m_set -= 2 println(m_set) // => 1, 3
- セットは順序関係がないため, インデックスでのアクセスはできない.
マップ
マップはキーとそれに対応する値を保持するコレクション
// MutableMap<keyの型, valueの型> val m1: MutableMap<String, Int> = mutableMapOf("one" to 1, "two" to 2) println(m1) // => {one=1, two=2} println(m1.size) // => 2 println(m1["one"]) // => 1 m1 += "three" to 3 // 要素を追加 println(m1) // => {one=1, two=2, three=3}
- mapに格納する値は, Pairオブジェクトである必要がある.
- Pairオブジェクトは,
to の形式で生成可能.
とりあえず今日はここまで. (P55)