Kotlinでの変数の宣言
var
による変数の宣言
var
キーワードを用いて変数を宣言することができます。var
キーワードを用いた変数の宣言は、以下の構文で行います。
var string: String
ここでString
は、変数の型を表します。変数名の後に:
を置き、半角スペースを開けて型を指定します。:
の後の半角スペースは無くても動作に問題ありませんが、ここに半角スペースを置くのが普通です。
変数の代入
宣言した変数への値の代入は、以下の構文で行います。
string = "string"
ここで重要なのは、変数stringはString型で宣言されているため、String型以外の値を代入しようとするとコンパイルエラーとなることです。例えば、以下のコードではString型で宣言された変数stringにInt型の値を代入しようとしているため、コンパイルエラーとなります。
string = 0
変数の宣言時に代入
変数の宣言と同時に代入することも可能です。
var string: String = "string"
むしろ変数の宣言と同時に値を代入することのが普通です。
型推論
上記の構文を用いて変数の宣言時に値を代入する場合、値の型から変数の型を推論することが可能です(型推論)。この場合、変数の宣言から型の記述を省略することが可能です。
var string = "string"
型推論を用いない構文は型推論を用いた構文と比べて冗長であるため、右辺から容易に型を識別できる場合は積極的に型の記述を省略します。右辺から容易に型を識別できない場合は、一見して型を識別できるよう、冗長になっても型の記述を行う場合があります。型の記述の有無については、ケースバイケースで判断します。
再代入
var
キーワードで宣言した変数は再代入可能です。すなわち、一度値を代入した後に、再度別の値を代入することが可能ということです。以下のコードでは、trueOrFalse()
が返す結果に応じて、Int型の変数intに10または20を再代入しています。
var int: Int
if (trueOrFalse()) {
int = 10
} else {
int = 20
}
変数がvar
で宣言されている場合、コード内のどこで変数が変更されているかをプログラマーが追わなければならず、思わぬバグを生み出してしまう場合があります。そのため、次に示すval
を用いて、再代入のできない変数を宣言する方が安全なコードとなります。
val
による変数の宣言
再代入を許すvar
キーワードによる変数の宣言に対して、val
キーワードによる変数の宣言では再代入を許しません。そのため、val
キーワードを用いて変数を宣言した方が安全なコードとなります。val
キーワードによる変数の宣言は、以下の構文で行います。var
キーワードによる変数の宣言と同様です。
val string = "string"
再代入の項で示したコードは、val
を用いて以下のように改善することができます。Kotlinのif
は値を返す式であるため、このように書くことができます。
val int = if (trueOrFalse()) { 10 } else { 20 }
if
式やwhen
式などを用いて、変数をvar
ではなくval
で宣言することで、より安全なコードとなります。
About me 😎

茨城県つくば市在住のソフトウェアエンジニアです。専門領域はAndroidアプリ開発で、特にアーキテクチャに興味があります。某社でAndroidアプリ開発のテックリードをしています。
Jetpack ComposeによるAndroid MVVMアーキテクチャ入門の著者です。
👉 もっと詳しく
Writing 📝
Android MVVMアーキテクチャ入門
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。
👉 もっと詳しく