「作って楽しむプログラミング Androidアプリ超入門」の勉強をまとめていきます。
環境
java: 1.8.0_281
kotlin:1.5.10
Class
構文 クラスのインスタンス化
クラス名()
基本はこれだけ。
中身を定義するときには()必要
Javaと違いインスタンス生成にnew
は不要。
class Empty
val instance = Test()
val customer = Customer("Name")
varとval
Kotlin で変数を定義するには、val キーワードまたは、var キーワードを使用します。 変数定義時に値を初期化する場合は、コンパイラが型を判断してくれるので、多くの場合は型の記述を省略することができます(この機能を型推論 (type inference) と言います)。
val
:再代入できない参照を保持するための変数 (immutable reference)。Java の final 変数に相当。value の略。
var
: 再代入可能な変数 (mutable reference)。variable の略。
//var:変数 val:固定
var str = "大吉" //=> var str : String = "大吉"
//乱数を得るためのRandomクラスを、インスタンス化し、クラス型変数rndに初期値として代入している
val rnd = Random()
//nextIntメソッドに引数として(3)を渡し、戻り値として整数の値を得ている
//nextIntメソッドは乱数を整数で返すメソッド。乱数の範囲は指定した数字の-1
val number = rnd.nextInt(3)
ifとwhen
条件分岐のための構文
制御構文を用いることで、処理を分けることができる
if (number == 0) {
str = "吉"
}
else if (number == 1) {
str = "凶"
}
//if文をwhenで置き換えると
//when (number) {
//0 -> str = "吉"
//1 -> str = "凶"
//}
//when式で書き換えると
//val str = when(number){
//0 -> "吉"
//1 -> "凶"
//else -> "大吉"
//}
//式として用いる場合は、戻り値が必要。したがってelseは省略不可
配列の種類と特徴
Kotlinの配列には大きく分けて2つの種類があります。
基本型(プリミティブ型)の1つとしての配列
: Arrayが該当します
コレクションパッケージの1つとしての配列
: ListやArrayListなどArray以外のほとんどが該当します
Kotlinで複数の要素を扱う際は、基本的にコレクションパッケージで用意されているListやMutableListなどのクラスを使用します。
Arrayはライブラリなどで明示的に使うことを指定されている場合に使用すると良いでしょう。またListは読み取り専用のクラスであり、要素や要素数を変更する可能性がある場合はMutableListを使用します。
MutableListと同等のクラスにArrayListがあります。両者の違いは可変(Mutable)であることを明示しているか、です。通常はMutableListを使用し、Javaとの互換性などで明示的に使うことを指定されている場合にのみArrayListを使用すると良いでしょう。
サンプルコード
要素の確率を変更したい時は、if,whenなどの条件分岐ではなく、配列を用いるほうがベター
if,whenのサンプルコードはこちら
今回は吉:大吉:凶を18:1:1に設定したい。
また、今回使用するArrayクラスでは、宣言と同時に配列要素の初期化を行うことができる。
初期化処理には各要素に設定したい値を返す式を書く。今回は「吉」という文字列で初期化。
インデックス番号を指定して、「大吉」「凶」を代入する
//文字列型が20個分入った配列を宣言する
val omikujiShelf = Array<String>(20,{"吉"})
omikujiShelf[0] = "大吉"
omikujiShelf[19] = "凶"
for文で配列にアクセスする
要素数が増えてきても、要素1つずつ指定するのは非効率なのでfor文の範囲式を使用する
javaで言うと拡張for文みたいなイメージ
上記のコードを範囲式で書き換える
//文字列型が20個分入った配列を宣言する
for (i in 0 .. 19 ) {
omikujiShelf[i] = "吉"
}