定数

目次
  • 解説
  • 1. 学習の準備
  • 2. 定数とは
  • 3. 定数の命名規則
  • 4. 定数を作る場所
問題に挑戦!
進捗を変更する




解説

1. 学習の準備


型と変数について学ぶ前に > 1. 学習の準備」を参考に、下表のとおり学習用のクラスを作成して、その中にmainメソッドを作っておきましょう。

ファイル名Constants.java
パッケージ名(格納フォルダー)net.digskill
クラス名Constants

2. 定数とは


変数はその名のとおり、再代入することによってデータの変更が可能です。仮にプログラム中で変更したくないデータを入れた場合にも、誤って再代入されてしまう恐れがあります。

そのために、定数(ていすう)という変更不可能な器を作る方法が用意されています。定数は、通常の変数宣言の先頭に「final」というキーワードを付けることで宣言できます。

宣言時に代入を行わなかった場合には、最初の代入以降が再代入不可となります。

定数のメリットは変数のメリットとほぼ同じです。

メリット主な効果
データに名前を付けられる・データの中身を知らなくても使える
データを表現する際の記号(ダブルクォーテーションなど)を多用しなくて済む・プログラムコードが煩雑にならない
異なる型のデータを同じように扱うことができるようになる・データの受け渡しが容易になる
代入時に型チェックができる・データ形式誤りによるエラーを防げる
再代入時にエラーが発生する・代入ミスを防げる

3. 定数の命名規則


定数の名前はコンスタントケースという命名規則に従って命名します。

規則名・例規則・由来・別名・用途
キャメルケース
aaaBbbCcc
・先頭小文字、単語の先頭大文字
・大文字の位置がらくだのコブに見えることに由来
・ロワーキャメルケースとも呼ぶ
・Javaでは変数名やメソッド名などに使用する
パスカルケース
AaaBbbCcc
・先頭大文字、単語の先頭大文字
・Pascalという言語で使われていたことに由来
・アッパーキャメルケースとも呼ぶ
・Javaではクラス名などに使用する
スネークケース
aaa_bbb_ccc
・すべて小文字、アンダーバーで単語を接続
・ヘビに見えることに由来
・主に大文字小文字を区別しない環境
 (HTMLやSQLなど)で使用する
ケバブケース
aaa-bbb-ccc
・すべて小文字、ハイフンで単語を接続
・トルコの串焼き料理ケバブに見えることに由来
・ハイフンがマイナスを示さない環境
 (HTMLや設定ファイルなど)で使用する
コンスタントケース
AAA_BBB_CCC
・すべて大文字、アンダーバーで単語を接続
・定数(constant)で使われることに由来
・アッパースネークケースとも呼ぶ
・Javaでは定数名に使用する

命名規則は絶対ではなく、あくまで一般的にみんなが推奨するというものです。そのため、所属する会社やプロジェクトやチームなどにより若干の変動がありますので、それぞれの方針に従うようにしましょう。

なお、どんな名前を付けても構いませんが、命名に使う文字や単語には制約があります。

使用可能文字・A-Z、a-z、アンダーバー(_)、0-9のみが使用できる
・ただし先頭に0-9は使用できない
予約語の単体使用不可・型名(int、boolean他)、修飾子(public、static他)、
 その他キーワード(class、import他)は予約語と言い、
 変数名などの名前(識別子)に単体では使用できない

4. 定数を作る場所


1. 学習の準備」で作成した「Constants.java」ファイル全体を次のサンプルコードのように変更してください。

package net.digskill;

import net.digskill.utility.Logger;

public class Constants {
    public static void main(String[] args) {
        final String MAIN_METHOD_CONSTANT = "これはメインメソッドの定数です。";
        practiceScope();
    }

    static void practiceScope() {
        final String METHOD_CONSTANT = "これは定数です。";
        Logger.out(METHOD_CONSTANT);
        // METHOD_CONSTANT = "再代入できない!"; // コメントを外すとエラー
        // Logger.out(MAIN_METHOD_CONSTANT);     // コメントを外すとエラー
    }
}

定数に再代入できないことを確認するためには、14行目のコメントを外してみてください。

また、変数と同じく、定数は作ったブロックの中だけで有効となりますので、15行目はコメントを外すとエラーとなります。これを定数のスコープと言います。

今後、クラスのブロックに定数を作成する方法(クラス定数インスタンス定数)について学習しますので、それまでは使うメソッド内で定数を作成するようにしましょう。

このようなあるメソッド内のみで有効な定数ローカル定数と呼びます。

問題

確認問題


確認問題1

この中で定数の説明として正しいものはどれか?