Caution
お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。
val / var
『val』は再代入不可の変数(不変)、『var』は再代入可能な変数(可変)を宣言するキーワードです。型は初期値から推論されるため、多くの場合は省略できます。
構文
// 再代入不可の変数(不変)を宣言します。 val 変数名: 型 = 値 val 変数名 = 値 // 型推論 // 再代入可能な変数(可変)を宣言します。 var 変数名: 型 = 値 var 変数名 = 値 // 型推論
構文一覧
| キーワード | 概要 |
|---|---|
| val | 再代入不可の変数を宣言します。参照は変更できませんが、参照先オブジェクトの内部状態は変更できます。 |
| var | 再代入可能な変数を宣言します。後から別の値を代入できます。 |
| 型推論 | 初期値を与えると Kotlin が型を自動で決定します。型注釈を省略できるため、コードが簡潔になります。 |
| lateinit var | 非 null 型の var を初期化を遅らせて宣言します。クラスのプロパティで初期化をコンストラクター後に行う場合に使用します。 |
サンプルコード
fun main() {
// val は再代入不可です。
val name: String = "Kotlin"
val version = 2.0 // 型推論で Double になります。
println(name) // 『Kotlin』と出力されます。
println(version) // 『2.0』と出力されます。
// val に再代入しようとするとコンパイルエラーになります。
// name = "Java" // エラー: Val cannot be reassigned
// var は再代入可能です。
var count = 0
count = count + 1
count += 1
println(count) // 『2』と出力されます。
// 型注釈を明示的に書くこともできます。
var score: Int = 100
score = 200
println(score) // 『200』と出力されます。
// val でもリストの中身は変更できます(参照自体は不変)。
val numbers = mutableListOf(1, 2, 3)
numbers.add(4) // これは OK です。
println(numbers) // 『[1, 2, 3, 4]』と出力されます。
}
概要
Kotlin では基本的に『val』を優先して使い、再代入が必要な場合のみ『var』を使うスタイルが推奨されています。不変変数を積極的に使うことで、値の変化による予期せぬバグを防ぎやすくなります。型推論が働くため、型注釈はコードの意図を明示したいときや、初期値を後から設定する場合に記述します。
変数の型については『基本データ型』を、Nullable 型については『Nullable 型 / ?. 演算子』を参照してください。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。