Javaの定数変数とfinal
変数の違いを理解してください。私は少し混乱しています。
Constantは、変数のプロパティである概念です。
final
は、定数変数を宣言するJavaキーワードです。
他の人が指摘したように、セマンティック/言語の観点から、式定数変数は矛盾表現であり、そのため、その正確性について議論することができます。
仕様 を引用して、とにかく、私たちは読むことができます
プリミティブ型の変数[...]、つまりfinalであり、コンパイル時の定数式(§15.28)で初期化される変数は、定数変数と呼ばれます。
したがって、私たちは、目的のためにこの二項式を受け入れる(そして正しいと考える)ことができると思います。
Constant
はJavaのキーワードではありません。
任意の変数を定数にすることは概念です。このために、Javaでfinal
キーワードを使用するため、finalキーワードで変数を初期化した後、誰もその変数の値を再割り当てできません。
現実の世界には、決して変わらないいくつかの価値があります。正方形には常に4つの辺があり、小数点以下3桁までのPIは常に3.142であり、1日は常に24時間です。これらの値は一定のままです。プログラムを作成する場合、変数に割り当てられた後は変更されない値として、同じ方法でそれらを表すことは理にかなっています。これらの変数は定数と呼ばれます。
変数を定数として宣言する
変数を宣言する際に、int変数に値を簡単に割り当てることができることを示しました。
int hoursInADay = 24;
この値は現実の世界では決して変わらないことを知っているので、プログラムではこの値が変わらないようにします。これには、キーワード修飾子final
を追加します。
final int HOURS_IN_A_DAY = 24;
final
キーワードに加えて、標準のJava命名規則に従って、変数名の大文字小文字が変更されていることに注意してください。これにより、どの変数がコードの定数であるかを見つけます。
HOURS_IN_A_DAY
の値を変更しようとした場合:
final int HOURS_IN_A_DAY = 24;
HOURS_IN_A_DAY = 36;
コンパイラから次のエラーを受け取ります。
最終変数HOURS_IN_A_DAYに値を割り当てることはできません
同じことは、他のプリミティブデータ型変数のいずれにも当てはまります。それらを定数にするには、final
キーワードを宣言に追加するだけです。
定数を宣言する場所
通常の変数と同様に、定数のスコープを使用される場所に制限します。定数の値がメソッドでのみ必要な場合は、そこで宣言します:
public class Hours {
public static final int HOURS_IN_A_DAY = 24;
}