今回は、プログラミングの基本、変数について学んでいきましょう。
変数と型
変数とは、プログラムの処理で使う一時的に値を入れておく箱のようなものです。例えば、数学でおなじみの「x + y = 5」のような式があった場合、「x」や「y」に任意の値を入れて利用しますが、その「x」「y」に該当するものが変数です。
変数を作ることを「宣言」、変数に値を入れることを「代入」と呼びます。
Kotlinでは変数を下記のように記述します。
変数にはどのような形式(型)のデータを代入して使うのかを、変数の宣言時に決めますが、省略して記述することもできます。
var 変数名 : 値の型(省略可) ← 値を何度も入れ替えできる
下記は、 整数を格納する変数aを宣言(Intは整数の型) して、値を代入する例です。「var」をつけるのは最初に変数を宣言する時だけです。
また、変数に代入した値は、変数を参照することで確認できます。
下記の「println(変数名)」は、指定した変数の値を出力する命令文です。
fun main(args : Array<String>){
var a : Int
a = 10
println(a)
}
———————————————————————————————-
実行結果
10
varで宣言した変数は再度代入することで値を入れ替えることもできます。
fun main(args : Array<String>){
var a : Int
a = 10
a = 5
println(a)
}
———————————————————————————————-
実行結果
5
下記は「: 値の型」を省略して変数を宣言した例です。
変数宣言をした後、整数値を代入しているので、aはInt型の変数となります。
fun main(args : Array<String>){
var a
a = 10
println(a)
}
———————————————————————————————-
実行結果
10
変数の宣言と値の代入は同時に書くこともできます。
数の宣言時に型の記述を省略した場合は、代入した値によって型が決まります。
fun main(args : Array<String>){
var a = 10
println(a)
}
———————————————————————————————-
実行結果
10
何度も値を入れ替えて使うことが出来るものを変数と言うのに対し、入れ替えができない変数のことを「定数」と呼びます。
val 定数名 : 値の型(省略可) ← 一度代入した値を入れ替えできない
下記のように、「val」で宣言した変数に一度値を代入した後、別の値を代入することはできません。(エラーになります)
fun main(args : Array<String>){
val b : Int = 100
b = 30
}
変数を使う時は、基本的に「val」を使い、どうしても値を入れ替えて使いたいような場合に「var」を使います。
また、変数に代入できる値の型は整数だけでなく、下記のように文字列を格納することもできます。文字列とは、0文字以上の文字の集まりのことを指します。文字列を格納する文字は「 ” 」(ダブルクォーテーション)で囲みます。
fun main(args : Array<String>){
val c : String = “ABC”
println(c)
}
———————————————————————————————-
実行結果
ABC
値の型は、整数(Int)や文字列(String)の他にも少数値(Double)や真偽値(Boolean)など色々な型があります。
変数に値を代入する際は、下記のように、一度文字列を代入した後で整数を代入するというような、異なる型の値を代入することはできません。(エラーになります)
fun main(args : Array<String>){
var d = “ABC”
d = 10
}
変数の足し算
変数は格納した値をそのまま参照するだけでなく、変数同士を足し算して使うこともできます。
fun main(args : Array<String>){
val x = 1
val y = 3
print(x + y)
}
———————————————————————————————-
実行結果
4
変数に代入されている値が数値の場合は計算されますが、文字列を足し算すると、文字列の連結になります。
fun main(args : Array<String>){
val x = “1”
val y = “3”
print(x + y)
}
———————————————————————————————-
実行結果
13
では、数値と文字列の変数を足し算したらどうなるでしょうか?
下記は、整数の1と文字列の”3″を足し算した例です。
fun main(args : Array<String>){
val x = 1
val y = “3”
print(x + y)
}
———————————————————————————–
実行結果
13
実は、文字列を含む足し算は文字列の連結になってしまいます。
また、変数と文字列、数値を直接足し算することもできます。
下記は、”1+3″という文字列とxの値を足し算した例です。
fun main(args : Array<String>){
val x = 4
print(“1 + 3 = ” + x )
}
———————————————————————————————-
実行結果
1 + 3 = 4
下記は、文字と計算結果を足し算したいのですが、文字列を含む足し算なので文字列連結になってしまった例です。
fun main(args : Array<String>){
val x = 2
val y = 1
print(“2 + 1 = ” + x + y)
}
———————————————————————————————-
実行結果
2 + 1 = 21
こういう場合は、数値の計算を先に実行するよう、優先順位を上げる必要があります。四則演算と同じルールです。
fun main(args : Array<String>){
val x = 2
val y = 1
print(“2 + 1 = ” +( x + y ))
}
———————————————————————————————-
実行結果
2 + 1 = 3
文字列を連結する場合は「+」だけでなく、${変数名}を使って埋め込むこともできます。
こちらの書き方だと、文字列の中に直接埋め込んで置き換え文字のような感覚で使えるので、「 “文字列” + 変数 」のように分けて書く必要がなく書きやすいと思います。
fun main(args : Array<String>){
val name = “石川”
print(“名前は${name}です”)
}
———————————————————————————————-
実行結果
名前は石川です
計算の式を埋め込むこともできます。
fun main(args : Array<String>){
val x = 2
val y = 1
print(“2 + 1 = ${( x + y )}”)
}
———————————————————————————————-
実行結果
2 + 1 = 3
次回は、演算子について学んでいきたいと思います。