MADOCHAN BLOG

30代未経験でWEBエンジニアをめざしてます!!!!!



【JAVA】 final変数について調べたこと


イラストでよくわかるAndroidアプリのつくり方—Android Studio対応版 イラストでよくわかるシリーズ

こちらの本でスロットマシンを作成していたときに、final修飾子が出てきて、その辺の扱いでつまずいてちょこちょこと調べたのでまとめます。 final変数の説明の際、変数の種類も色々と出たのでその辺も含めて書いてます。

finalとは

finalは最後のと言う意味のとおり、決めたことを勝手に変更できないようにする修飾子です(これが最後とするみたいなかんじで) クラスやメソッドにfinalを付けることでそれぞれ変更できないようにする部分が異なります。

final 変数:finalとした変数への値に再代入できないようにする final クラス:クラスを継承できないようにする final メソッド:メソッドをオーバーライドできないようにする

変数の種類

ローカル変数:メソッド内で定義される変数 メンバー変数:クラス内に直接書かれる変数。クラスのメンバーとして定義され、フィールドと呼ばれる。

さらにメンバー変数はクラス変数とインスタンス変数にわかれます。

クラス変数:「static」つきで宣言し、コンパイル時点で作成されるnewでインスタンスが生成されなくても使えて、クラスに1つしか存在しない インスタンス変数:「static」なしで宣言し、コンパイル時点では作成されない。newでインスタンスが生成されるまで存在せず、生成されたインスタンスごとに存在する

再代入できないfinal変数

finalな変数は1度しか代入できないため、変数を定義する際の初期化はしなくてOK。

 final String hensu; // 初期化必要なし
  hensu = "一回目の代入"; // 一度目の代入なのでコンパイルエラーはない
  System.out.println(hensu);

  hensu = "二回目の代入";
  System.out.println(hensu); // 再代入できないためコンパイルエラーとなる

finalにした変数は再代入ができないというのがポイント。
変数の内容を書き換えることはできないけれど、定義した変数を使って色々と行うことはできます。

参照: engineer-club.jp