2016-08-04 5 views
-4

私はクラスを検討していると私はKilograms_Per呼ば最終ダブル変数があるが、静的が宣言の前にあります気づいた、静的の使用は何ですか?ここでセグメントである:「最終」変数に「静的」を使用するとは何ですか?変数が<strong>最終</strong>あるので、

public static final double KILOGRAMS_PER_POUND = 0.45359237; 
+0

最終キーワードは変更できない変数の定数値を表します。 変数はキーワード "static"で宣言され、 "class変数"と呼ばれます。すべてのインスタンスは同じ変数のコピーを共有します。 – Vickyexpert

+0

インスタンスを作成する必要なく、クラス変数に直接アクセスできます。また、finalは2つの全く異なるキーワードです。public staticはこの変数をクラスレベルで宣言し、別のクラスからアクセスできるようにしますクラスを「MyClass.KILOGRAMS_PER_POUND」 –

+0

にチェックしてください。http://stackoverflow.com/questions/15655012/how-final-keyword-works – Junaid

答えて

5

staticは、変数は、クラスではなく、クラスのインスタンスに関連付けられていることを意味します。

finalは、変数が初期化された後に再割り当てできないことを意味します。 KILOGRAMS_PER_POUNDを再度変更しようとすると、コンパイラエラーが発生します。

staticおよびfinalは互いに直交している。あなたはこのクラスを持っているとします

public class Foo { 
    public static final double KILOGRAMS_PER_POUND = 0.45359237; 
} 

変数KILOGRAMS_PER_POUNDができ:

のみ
  1. static、変数はオブジェクトに関連付けられているので、それは別のクラスからFoo.KILOGRAMS_PER_POUNDとして参照されることを意味します。 finalではないため、変数を再割り当てすることもできます。 Foo.KILOGRAMS_PER_POUND = 3.14

  2. finalのみ。 staticではないため、変数はクラスのインスタンスによって参照される必要があります。 Foo foo = new Foo(); System.out.println(foo.KILOGRAMS_PER_POUND);変数はfinalなので、再割り当てすることはできません。

  3. staticおよびfinal。静的なので、別のクラスのFoo.KILOGRAMS_PER_POUNDと参照されます。それは最終的なものなので、再割り当てすることはできません。

0

finalキーワードで宣言されているものは定数で、変更されないものです。変換、数学定数などはすべて定数とみなされます。私たちは、決して変わらない定数、PIを定義し、最初の割り当て後に変更することはできません

public final double PI = 3.1415926; //Not as precise as many languages 

次の例を見てみましょう。

静的なものは、インスタンスではなくクラス固有のものです。あなたはクラス名とそのフィールドやメソッドを使用し、

Test t = new Test(); //If we had a Test class 

そして、ドット表記法による、しかし、静的変数やメソッドでインスタンス変数やメソッドにアクセス:我々は通常、このような新しいオブジェクトを作成します。つまり、クラス(またはオブジェクト)のインスタンスに固有ではなく、そのクラスのためのものです。次の例を見てください、私たちは数学のクラスを持って考えてみましょう。ここでは

public static final double PI = 3.1415926; 

public static toRadians(double degs) { 
    return degs * PI/180; 
} 

が、それだけでtoRadiansを呼び出すための新しいオブジェクトを作成するには、便利な非現実的、かつ無意味ではない、ので、それは静的です。

Math.toRadians(39.29); 
System.out.println(Math.PI); 

このメソッド以外の変数は、静的コンテキストで使用するにはstaticと宣言する必要があります。これはmainメソッドに適用され、mainメソッド内で参照または実行されるメソッド外の変数またはメソッドは、mainが静的​​であるため、静的でなければなりません。ここでは例です:静的および最終的に宣言され

public static void main(String[] args) { 
    testMethod(); 
} 

private static testMethod() { //Must be static because it is called in a static method 
    System.out.println("Hello"); 
} 

結論 何かが定数と静的な文脈で使用されるか、または静的文脈の中で参照されるものです。 Piやeなどの数学的定数は、通常はインスタンスではなくクラスを介して参照される定数であるため、このように定義されています。

関連する問題