定数
- 解説
- 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
この中で定数の説明として正しいものはどれか?