System.out.println("Java学習中");

【Java / Spring Boot】UI/UXの視点を活かしたバックエンド開発の学習ポートフォリオ

【Java Silver対策】絶対に書き換えられたくないデータを守るfinal修飾子

🟢 はじめに

Javaの学習をしていると、変数データを入れる箱)の前に finalファイナル) というキーワードがついているのを見かけることはありませんか?

普通の変数と何が違うの?」 「つけるとどんな良いことがあるの?」

今回は、そんなJavafinal について、RPGの世界に例えながら分かりやすく解説します!


final は「1回しかアイテムを入れられない、鍵付きの宝箱」📦🔒

プログラミングにおいて、変数は「データを入れる箱」です。

通常、箱の中身は後から何度でも入れ替えることができます。

しかし、変数を宣言するときに頭に final をつけると、その箱は 「1回しか中身を入れられない、一度入れると魔法の鍵がかかる宝箱」 に変身します!

実際のコードで、その動きを見てみましょう。


📝 サンプルコード:勇者のステータス管理

RPGの主人公である「勇者」の初期ステータスを設定するプログラムを書いてみます。

public class HeroStatus {
    public static void main(String[] args) {
        // ① 勇者の初期HPを設定(1回目の収納なのでOK!)
        final int initialHp = 100;
        
        // ② 初期HPをもとに、現在のHPを設定(これも箱 currentHp にとっては1回目の収納なのでOK!)
        final int currentHp = initialHp;
        
        // ③ 魔王から「HPを1にする」呪いを受けた!(エラー発生!)
        // currentHp = 1; // ← ここでコンパイルエラーになります❌
        
        System.out.println("勇者の現在のHP: " + currentHp);
    }
}

コードの解説:なぜエラーになるの?🤔

プログラムの動きを順番に追っていきましょう!

1️⃣ final int initialHp = 100;

空っぽの魔法の宝箱 initialHp に、「100」という数字を入れました。

1回目の収納なので大成功!ここでガチャッと頑丈な鍵がかかります。

2️⃣ final int currentHp = initialHp;

initialHp の中身(100)をコピーして、新しい魔法の宝箱 currentHp に入れました。

あれfinal別の変数のデータを入れてもいいの?」と思うかもしれませんが、箱 currentHp にとってはこれが「1回目の収納」なので、正常にコンパイルが通ります!

3️⃣ currentHp = 1;コンパイルエラー❌)

魔王の攻撃HPを「1」に書き換えようとしています。

しかし、宝箱 currentHp にはすでに強固な鍵がかかっています。

もう中身は絶対に変更させない!」とJavaが守ってくれるため、ここでエラーコンパイルエラー)になります。


なぜ final を使うの?(使うメリット)💡

わざわざ中身を変えられなくするなんて、不便じゃない?」と思うかもしれません。

しかし、final は 「このデータは途中で誰かに書き換えられたら困る!」という時に、データを守ってくれる心強いお守り魔法の盾) のような存在なのです。

例えば、以下のような絶対に変わってはいけないデータに final を使います。

  • 消費税率(途中で勝手に15%に書き換えられたら計算が狂ってしまいますよね💸)

  • ゲームの最大プレイヤー数

  • 変更してほしくない初期設定のパスワード

あえて final をつけて「書き換え不可」にすることで、「間違って別のデータを上書きしてしまう」という恐ろしいバグ不具合)を未然に防ぐことができます。


📝 まとめ

  • final がついた変数は、1回しかデータを入れられない!(上書き再代入できない

  • 別の変数の値を入れても、その箱にとって1回目ならOK

  • 予期せぬ書き換えからデータを守る「お守り」として大活躍する!

Java Silverの試験でも、この「1回こっきりルール」は頻出ポイントだと言われています。

同じように「final修飾子の引っかけ問題の解き方がよく分からない😵‍💫」と悩んでいる方の参考になれば幸いです🙌


【プロフィール・作品置き場】

kenichikamoi.com


🎵 Youtube(楽曲一覧)はこちら

www.youtube.com