web-dev-qa-db-ja.com

Javaの定数変数と最終変数の違いは何ですか?

Javaの定数変数とfinal変数の違いを理解してください。私は少し混乱しています。

13
Swaram Jagtap

Constantは、変数のプロパティである概念です。

finalは、定数変数を宣言するJavaキーワードです。


他の人が指摘したように、セマンティック/言語の観点から、式定数変数は矛盾表現であり、そのため、その正確性について議論することができます。

仕様 を引用して、とにかく、私たちは読むことができます

プリミティブ型の変数[...]、つまりfinalであり、コンパイル時の定数式(§15.28)で初期化される変数は、定数変数と呼ばれます

したがって、私たちは、目的のためにこの二項式を受け入れる(そして正しいと考える)ことができると思います。

26
Luigi Cortese

ConstantはJavaのキーワードではありません。

任意の変数を定数にすることは概念です。このために、Javaでfinalキーワードを使用するため、finalキーワードで変数を初期化した後、誰もその変数の値を再割り当てできません。

9
Amit Das

現実の世界には、決して変わらないいくつかの価値があります。正方形には常に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;
}
5
Saket Mittal