Kotlin

変数の定義valとvar - Kotlin入門

変数(variable)とは、プログラムの中でデータを記憶しておくために、データに名前を付けたものです。
Kotlinでは、変数を宣言するのに使用するキーワードが2つあります。val と var です。

 

val:再代入不可(読み取り専用)の value

リテラルに名前を付けて変数と結びつけることを代入(assignment)と言います。

参考

リテラルについては、「リテラルと基本データ型」を参照

 

変数にリテラルを代入するためには、キーワード val を使います。
val は、一度変数に代入すると、再代入はできません。そのため「読み取り専用」となります。

 書式
val 変数名: 型 = 式
SANACHAN
SANACHAN
ここでは、「式」を「リテラル」と読み替えてください

 

リテラルを変数に代入すると、その変数を使って元のリテラルを参照できます。

 Kotlin
fun main() {
val v1: Int = 123
val s1: String = "Hello"
println("v1 = $v1")
println("s1 = $s1")
}
 実行結果
v1 = 123
s1 = Hello

 

代入するリテラルと変数の型が不適合である場合は、コンパイルに失敗します。

 Kotlin
val s1: Long = "Hello"
 実行結果
error: Type mismatch: inferred type is String but Long was expected

 

var:再代入可能な変数の定義 variable

一度、変数に代入した後、別の値を同じ変数へ代入したい場合があります。
その場合は、キーワード val の代わりに var を使用します。

 Kotlin
fun main() {
var v1: Int = 5
v1 = 3
println("v1 = $v1")
}
 実行結果
v1 = 3

 

おまけ:型推論

Kotlin は静的型付け言語(Statically Typed Language)です。
そのため、コンパイル時に変数の型が分からないといけません。

しかし、「val name: String = "Sanachan"」のような変数定義に、型を指定するのは冗長に思えます。
"Sanachan"というリテラルから、明示的に String と書いていなくても、
変数 name の型は String になるだろうと推論することができるからです。

 

Kotlin コンパイラも、型推論を行います。
これにより、「val name = "Sanachan"」と記述するだけで変数を定義することができます。

 Kotlin
fun main() {
var name = "Sanachan"
println("name=$name, type=${name::class.qualifiedName}")
}
 実行結果
name=Sanachan, type=kotlin.String

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Kotlin
-, , ,