【Kotlin】レッスン1-2:変数と定数を理解しよう

ながみえ

一つ前のページでは初めての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ではプログラム内でデータを管理・操作するために「変数」「定数」を使います。

それぞれの役割や使い方を学ぶことで、プログラムを効率的に書くことができるようになります。

また、変数や定数が扱うデータの種類(基本データ型)についても理解することが大切です。

本記事ではそれらの基本的な知識を解説します。

基本データ型とは?|データに種類があることを理解しよう

プログラムは様々な種類のデータを扱います。

例えば、数字、文字、文字列(文章)、真偽(正しい/間違っている)などが挙げられます。

このようなデータを正しく管理するため、Kotlinでは「データ型」という仕組みが用意されており、全てのデータは、それがどのデータ型に分類されるものかを指定される 必要があります。

基本データ型には以下のものがあります。

  • Int型(整数型): 整数
  • Double型(少数型):小数点を含む数値
  • Char型(文字型): 単一の文字
  • String型(文字列型): 2つ以上の文字が連なった文章
  • Boolean型(真偽値型): 真(true)か偽(false)か
  • Any型:どんな型の値でも代入可能

これらの型を指定することで、プログラムがどのようにデータを扱うべきかを理解します。

Kotlinでは型を明示することもできますが、自動で型を推測してくれる便利な仕組みもあります(後述)。

変数と定数の違い|使い分けと宣言方法を学ぼう

変数 とは、値を格納し、必要に応じて変更できる箱のようなものです。

たとえば「年齢」という名前の変数を用意し、誕生日を迎える度にその値(箱の中の数値)を増やすような場合に使います。

一方 定数 は一度値を設定すると変更できない箱です。

例えば円周率(3.14159)のように決して変わることがない値を扱う場合に使います。

定数を使うことで意図しない変更を防ぎ、プログラムの信頼性を向上させることができます。

変数の宣言方法|varキーワードによる定義

変数を宣言するには、varキーワード を使用します。

var name: String = "Taro"	// 文字列型の変数nameを宣言し、文字列Taroを入力
var number: Int = 10		// 整数型の変数numberを定義し、数値10を代入

number = 20					// 10が代入された変数numberに20を再代入(上書き)

1行目のコードを細かく解説します。

  • var name ⇒ nameという名前の変数を定義しています。
  • : String ⇒ 変数namerは文字列型であると定義しています。
  • = ⇒ このイコールは 代入演算子 といい、右辺のデータを左辺に格納します。数学の「=(右辺と左辺の大きさが等しい)」とは意味が異なる点に注意しましょう。
  • "Taro" ⇒ 「Taro」という文字列を表します。

この動作により、nameという変数が作られ「Taro」というデータが格納されました。2行目についても同様です。

4行目では、すでに定義済みの変数numberに格納された数値を10から20に上書きしています。

定数の宣言方法|valキーワードによる定義

定数を宣言するには valキーワード を使用します。

val pi: Double = 3.14159	// 少数型の定piを定義し、数値3.14159を代入
val x: Boolean = True		// 真偽値型の定数xを定義し、Trueを代入

pi = 3.0					// 定数への再代入はできないため、この行はエラーとなる

変数と同様に1行目のコードを細かく解説します。

  • val pi ⇒ piという名前の定数を定義しています。
  • : Double ⇒ 定数piは少数型であると定義しています。
  • = ⇒ 代入演算子。右辺のデータを左辺に格納します。
  • 3.14159 ⇒ 格納する小数データ

定数はプログラム中で変更する必要がない値を扱う際に使用します。

4行目の「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の強力な特徴のひとつに「型推論」がります。

これは型の種類をわざわざ指定しなくても、代入されたデータからコンパイラが自動的に判断してくれるものです。

以下のように書くと型推論を利用できます。

val message = "Hello"	// String型と推論
var count = 42			// Int型と推論

この仕組みを利用することでコードが簡潔になり、読みやすさが向上します。

ただし、複雑なコードでは型を明示したほうが良い場合もありますので、状況に応じて使い分けましょう。

まとめ|ポイントをおさらいしよう

Kotlinではデータを管理するために変数と定数を使い分けます。

変数は値を変更可能で、定数は不変の値を扱います。またKotlinは強力な型推論機能を持ち、初心者でも使いやすい設計になっています。

まずは変数や定数を使って基本的なプログラムを作り、慣れていきましょう。

練習問題|ユーザー入力に応じたメッセージを表示しよう

変数と定数を使った簡単なプログラムを作成しましょう。

このプログラムではユーザーから名前を入力してもらい、挨拶を表示します。また定数を使用して固定メッセージを作成します。

さらに変数の値を変更し、新しい名前で再度挨拶をする流れを学びます。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 定数 greeting に「ようこそ、Kotlinの世界へ!」という文字列を格納し、これを画面に表示すること。
  • 変数 userName を宣言し、ユーザーに名前を入力してもらい、この値を格納すること。
  • 入力された名前を使い、「こんにちは、[名前] さん!」というメッセージを表示すること。
  • 変数 userName の値を再代入し、新しい名前を入力してもらい、「新しい名前は [新しい名前] ですね!」というメッセージを表示すること。
  • 定数と変数の違いを理解するため、定数に再代入を試みるコードを書き、エラーとなることを確認すること。

ただし、以下のような実行結果となること。

ようこそ、Kotlinの世界へ!
あなたの名前を入力してください:
田中
こんにちは、田中 さん!
名前を変更したい場合は新しい名前を入力してください:
佐藤
新しい名前は 佐藤 ですね!

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:main関数の定義
  □ 定数 greeting を宣言し、「ようこそ、Kotlinの世界へ!」という文字列を格納
  □ greeting を画面に出力
□ greeting の値を変更しようとし、エラーとなることを確認
□ 変数 userName を宣言
  □ 「あなたの名前を入力してください:」という文字列を画面に出力
  □ readLine を用いてユーザーからの入力を取得し、変数 userName に格納
  □ 入力された名前を使い、「こんにちは、[名前] さん!」という文字列を出力
  □ 「名前を変更したい場合は新しい名前を入力してください:」という文字列を画面に出力
  □ readLine を用いて新しい名前を取得し、変数 userName に再代入
  □ 再代入された名前を使い、「新しい名前は [新しい名前] ですね!」という文字列を出力

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。

この問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
fun main() {
    // 定数の例: 変更できない値を格納します
    val greeting: String = "ようこそ、Kotlinの世界へ!" // 定数は変更できません
    println(greeting) // 定数の値を表示します

    // 定数に再代入しようとするとエラーになります(以下のコードはコメント化されています)
    // greeting = "再代入しようとするとエラーになります!" // コンパイルエラー

    // 変数の例: 変更可能な値を格納します
    println("あなたの名前を入力してください:") // 入力を促すメッセージを表示します

    // ユーザーから名前を入力して変数に格納
    var userName = readLine()
    println("こんにちは、") // 入力された名前を使って挨拶を表示します
    print(userName)
    println(" さん!")

    // 変数の再代入
    println("名前を変更したい場合は新しい名前を入力してください:")
    userName = readLine() // 新しい名前を入力し再代入
    print("新しい名前は ") // 更新された名前を表示します
    print(userName)
    println(" ですね!")
}
Q
正解コードの解説

非常にシンプルなコードのため解説はありません。

難しいと感じる方はページ上部の用語の解説を読み返してみてください。

Q
サイト改善アンケート & ご指摘/ご質問

本サイトでは、みなさまの学習をよりサポートできるサービスを目指しております。
そのため、みなさまの「プログラミングを学習する理由」などを アンケート 形式でお伺いしています。

また記事の内容に関する ご指摘ご質問 もお待ちしています。

1.このサイトをどのように活用していますか?また、今後どのように活用したいですか?
5.気になっているサービス・商品があれば教えてください。
※ 特定の記事に関する内容の場合は、記事番号(レッスン〇-〇)をご記入願います。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました