1

変数が定数として宣言されている final キーワードを使用する場合、 static を使用する必要性は何ですか? 私たちが使用するほとんどの場所で見てきました

public static final int nVar = 12

定数データ メンバーの場合。

4

6 に答える 6

4

final変数を別のオブジェクト/プリミティブに再割り当てできないことを意味します。

staticこれは、JVMで実行されているすべてのコードが同じ変数を共有することを意味します。

非静的変数を再割り当てするfinalことはできませんが、各インスタンスには独自のコピーがあります。

static finalフィールド(インスタンスを作成せずにアクセス可能)は、一般に「定数」と呼ばれます

final(非静的)インスタンス変数は、一般に「不変フィールド」と呼ばれます

于 2013-01-15T06:37:50.137 に答える
3

finalは、変数の値が割り当てられると変更できないことを意味します。

staticは「クラスに関連付けられている」ことを意味します。それがない場合、変数はクラスの各インスタンスに関連付けられます。そうでない場合は、作成するインスタンスごとに 1 つになります。staticクラスがロードされている限り、変数がメモリに残ることを意味します

このように変数を宣言しても意味がありません。

public final int nVar = 12;

これが変更されることを意図していない場合、インスタンスごとに 1 つのコピーを用意する理由はありません。

したがって、クラス定数は次のように宣言する必要があります。インスタンスごとに不変static finalにしたい変数は、次のように宣言します。final

于 2013-01-15T06:39:56.267 に答える
2

これを宣言するstaticと、型のオブジェクトを作成せずに変数にアクセスできます。

于 2013-01-15T06:32:00.770 に答える
1

「最終」識別子は、変数の値を変更できないことを意味します。

ただし、「静的」とは、変数が定義されているクラス内に変数のインスタンスが 1 つあることを意味します。

final と static は 2 つの異なるものですが、クラスの定数を定義するために一緒に使用されることがよくあります。

于 2013-01-15T06:32:13.163 に答える
1

理由の 1 つは、その定数にアクセスするためにクラスのオブジェクトを作成する必要がないためですstatic。静的なのでクラス名でアクセスできます。

このコードを確認してください

public class A{
public static final int aa = 1;
}

public class B{
public final int bb = 1;
}

public class Testing{
SOP(A.aa);// a can be accessed with class name
B b = new B();// where to access the constant bb we need to create class object 
SOP(b.bb);
}
于 2013-01-15T06:35:38.113 に答える
0

静的変数は、クラスレベルで使用できることを意味します。そのクラスのすべてのオブジェクトで使用できるのは、その変数の1つのインスタンスのみです。静的変数は変更できますが、変更はそのクラスのすべてのオブジェクトに反映されます。最終変数は、初期化後にその値を変更できないことを意味します。静的修飾子を持つ最後の変数は、変数がクラスレベルで使用可能であることを意味します。つまり、そのクラスのすべてのオブジェクトの定数として機能します。

于 2013-01-15T06:36:06.520 に答える