【Kotlin】レッスン1-02:変数と定数を基礎から理解|valとvarの違いを解説

一つ前のページでは初めてのKotlinコードを書いてみました。
今回は 変数と定数 について見ていきましょう。
Lesson1:基礎文法編
・Lesson1-1:Kotlin学習の入り口|初めてコードを書いてみよう
・Lesson1-2:変数と定数を理解しよう ◁今回はココ
・Lesson1-3:四則演算をしよう
・Lesson1-4:Null安全性を理解しよう
・Lesson1-5:文字列の連結と埋め込みを理解しよう
・Lesson1-6:文字列を操作しよう
・Lesson1-7:import文を理解しよう
・確認問題1-☆1:ランダムパスワードを生成しよう
Lesson2:制御構造編
Lesson3:関数編
Lesson4:コレクション編
Lesson5:オブジェクト指向編
Kotlinの変数と定数を解説|valとvarの違いをしっかり理解しよう

Kotlinではプログラム内でデータを管理・操作するために「変数」と「定数」を使います。
それぞれの役割や使い方を学ぶことで、プログラムを効率的に書くことができるようになります。
また、変数や定数が扱うデータの種類(基本データ型)についても理解することが大切です。
本記事ではそれらの基本的な知識を解説します。
Kotlinの基本データ型を理解しよう|IntやStringなどの型一覧
プログラムは様々な種類のデータを扱います。
例えば、数字、文字、文章(文字列)、真偽(正しい/間違っている)などが挙げられます。
このようなデータを正しく管理するため、Kotlinでは「データ型」という仕組みが用意されており、全てのデータに対してそれがどのデータ型に分類されるものかを指定する必要があります。
基本データ型には以下のものがあります。
- Int型(整数型): 整数
- Double型(少数型):小数点を含む数値
- Char型(文字型): 単一の文字
- String型(文字列型): 複数の文字が連なった文章
- Boolean型(真偽値型): 真(true)か偽(false)か
これらの型を指定することで、プログラムがどのようにデータを扱うべきかを理解します。
Kotlinでは型を明示することもできますが、自動で型を推測してくれる便利な仕組みもあります(後述)。
変数と定数の違いとは?|使い分けと宣言方法を学ぼう
変数とは、値を格納し、必要に応じて変更できる箱のようなものです。
たとえば「年齢」を保存しておき、あとで誕生日を迎えた際にその値を増やすような場合に使います。
一方定数は一度値を設定すると変更できない箱です。
例えば円周率(3.14159)のように決して変わることがない値を扱う場合に使います。
定数を使うことで意図しない変更を防ぎ、プログラムの信頼性を向上させることができます。
変数の宣言
変数を宣言するには、var
キーワードを使用します。
var number: Int = 10 //整数型の変数numberを定義し、数値10を代入 number = 20 // 10が代入されたnumberに20を再代入(上書き)
- 「ver number」:numberという名前の変数を定義しています。
- 「: Int」:変数numberはInt型であると定義しています。
- 「=」:この=は代入演算子といい、右辺のデータを左辺に格納します。数学の「=(右辺と左辺の大きさが等しい)」とは意味が異なる点に注意しましょう。
- 「number = 20」:nunberの値を20に変更しています。
定数の宣言
定数を宣言するにはval
キーワードを使用します。
val pi: Double = 3.14159 //piという少数型の定数を定義し、数値3.14159を代入 pi = 3.0 // エラー: 再代入はできません
- 「vel pi」:の部分ではpiという名前の定数を定義しています。
- 「: Double」:の部分では定数piはDouble型であると定義しています。
- 「=」:代入演算子。定数piに3.14159を代入しています。
定数はプログラム中で変更する必要がない値を扱う際に使用します。
2行目の「pi=3.0」の部分でpiに値を再代入しようとしていますが、piは定数なので値の変更はできず、このまま実行するとエラーとなります。
これにより、意図しない変更を防ぐことができます。
変数と定数の使用例
以下は変数と定数の具体的な使用例です。
fun main() { //丸暗記構文 val greeting: String = "こんにちは、Kotlin!" // 文字列型の定数greetingに「こんにちは、Kotlin!」を代入 var age: Int = 25 // 整数型の変数ageに25を代入 age = "こんにちは" //エラー:ageは整数型なので、文字列を代入しようとするとエラーが出ます println(greeting) // 出力: こんにちは、Kotlin! print("年齢の初期値: ") println(age) // 出力: 年齢の初期値: 25 age = 26 print("更新後の年齢: ") println(age) // 出力: 更新後の年齢: 26 }
Kotlinの型推論とは?|型を明示せずにスマートなコードを書く
Kotlinの強力な特徴のひとつに「型推論」がります。これにより型を明示しなくてもコンパイラが自動的に型を判断します。
val message = "Hello" // String型と推論 var count = 42 // Int型と推論
この仕組みを利用することでコードが簡潔になり、読みやすさが向上します。
ただし、複雑なコードでは型を明示したほうが良い場合もありますので、状況に応じて使い分けましょう。
Kotlinの変数と定数まとめ|valとvarの理解を深めよう
Kotlinではデータを管理するために変数と定数を使い分けます。
変数は値を変更可能で、定数は不変の値を扱います。またKotlinは強力な型推論機能を持ち、初心者でも使いやすい設計になっています。
まずは変数や定数を使って基本的なプログラムを作り、慣れていきましょう。
練習問題|変数と定数を使ってユーザー入力に応じたメッセージを表示しよう

変数と定数を使った簡単なプログラムを作成しましょう。
このプログラムではユーザーから名前を入力してもらい、挨拶を表示します。また定数を使用して固定メッセージを作成します。
さらに変数の値を変更し、新しい名前で再度挨拶をする流れを学びます。
この問題の要件
以下の要件に従ってコードを完成させてください。
- 定数
greeting
に「ようこそ、Kotlinの世界へ!」という文字列を格納し、これを画面に表示すること。 - 変数
userName
を宣言し、ユーザーに名前を入力してもらい、この値を格納すること。 - 入力された名前を使い、「こんにちは、[名前] さん!」というメッセージを表示すること。
- 変数
userName
の値を再代入し、新しい名前を入力してもらい、「新しい名前は [新しい名前] ですね!」というメッセージを表示すること。 - 定数と変数の違いを理解するため、定数に再代入を試みるコードを書き、エラーとなることを確認すること。
ただし、以下のような実行結果となること。
ようこそ、Kotlinの世界へ! あなたの名前を入力してください: 田中 こんにちは、田中 さん! 名前を変更したい場合は新しい名前を入力してください: 佐藤 新しい名前は 佐藤 ですね!
この問題を解くヒント
1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。
- ヒント1【コードの構成を見る】
-
正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)1:main関数の定義
□ 定数greeting
を宣言し、「ようこそ、Kotlinの世界へ!」という文字列を格納
□greeting
を画面に出力
□greeting
の値を変更しようとし、エラーとなることを確認
□ 変数userName
を宣言
□ 「あなたの名前を入力してください:」という文字列を画面に出力
□readLine
を用いてユーザーからの入力を取得し、変数userName
に格納
□ 入力された名前を使い、「こんにちは、[名前] さん!」という文字列を出力
□ 「名前を変更したい場合は新しい名前を入力してください:」という文字列を画面に出力
□readLine
を用いて新しい名前を取得し、変数userName
に再代入
□ 再代入された名前を使い、「新しい名前は [新しい名前] ですね!」という文字列を出力
このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
fun main() { // 定数の例: 変更できない値を格納します val greeting: String = "ようこそ、Kotlinの世界へ!" // 定数は変更できません println(greeting) // 定数の値を表示します // 定数に再代入しようとするとエラーになります(以下のコードはコメント化されています) // greeting = "再代入しようとするとエラーになります!" // コンパイルエラー // 変数の例: 変更可能な値を格納します println("あなたの名前を入力してください:") // 入力を促すメッセージを表示します // ユーザーから名前を入力して変数に格納 var userName = readLine() println("こんにちは、") // 入力された名前を使って挨拶を表示します print(userName) println(" さん!") // 変数の再代入 println("名前を変更したい場合は新しい名前を入力してください:") userName = readLine() // 新しい名前を入力し再代入 print("新しい名前は ") // 更新された名前を表示します print(userName) println(" ですね!") }
- 正解コードの解説
-
非常にシンプルなコードのため解説はありません。
難しいと感じる方はページ上部の用語の解説を読み返してみてください。