2

最終変数と静的変数も使用しました。これらの変数について私が見つけたのは、

最終変数

  • 最終変数は、初期化子または代入ステートメントのいずれかを介して、一度だけ初期化できます。

  • 定数の値とは異なり、最終変数の値はコンパイル時に必ずしも既知ではありません。

最終的にどの変数を宣言する必要がありますか-

ほとんどの場合、PIの値など、値が普遍的に一定で変更できない変数を使用します。

public static final double PI = 3.141592653589793;

静的変数

  • これらは、object(instance)ではなく、クラスに属する変数です。

  • 静的変数は、実行の開始時に一度だけ初期化されます。

  • クラスのすべてのインスタンスで共有される単一のコピー

  • 静的変数にはクラス名で直接アクセスでき、オブジェクトは必要ありません。

最終的にどの変数を宣言する必要がありますか-

ほとんどの場合、私は一度だけ初期化したい変数を使用し、それらをenitreクラスで使用します。

最終的な静的変数を使用する場合

final static今、私は私のデータベースプロジェクトの1つで用語に出くわしました。一部のデータベースオブジェクトまたはデータベースバージョンでさえ、statcifinalとして宣言されていることがわかりました。

 static final String DATA_BASE = "BackUpDatabase.db";
    static final int DATA_BASE_VERSION = 1;

さて、私の質問は、どの変数をorまたはorとして宣言する必要があるかということですfinalstaticどちらfinal staticかを使用すると問題が解決した可能性があるため、両方を一緒に使用する必要があります。

4

7 に答える 7

8
static -  Only use when a variable which is used globally 
final -  Only use when you need to declare a value as constant 

static final - Only use when a value is globally used and it is a constant.

: - Here global means across all the instances of a java class
于 2012-11-27T06:48:53.597 に答える
5

として宣言された(またはその逆の)変数は、static final意味のある定数であると理解され、すべて大文字で名前が付けられ、スペースにはアンダースコアが付けられます。

一般的に遭遇する定数の例は、、Integer.MAX_VALUEまたはMath.PIです。

于 2012-11-27T06:40:25.617 に答える
4

finalは、一度初期化された値は変更できないことを示しているだけです。staticは、属性がクラスに属し、オブジェクトではないことを示します。

だからあなたが最後の静的と言うとき; これは、変数のコピーが1つだけであり、変更できないことを意味します。

于 2012-11-27T06:52:15.443 に答える
3

--java staticでは、クラスのメンバーを意味します。クラスのすべてのインスタンスで共有されます。

--java finalのキーワードは定数を意味しますが、適用される内容によって解釈が異なります。

-フィールドで使用する場合はstatic final、それをグローバル変数と見なします。

- PIは数学クラスの静的変数であり、クラス名を使用して直接アクセスされMath.PIます。

-静的な最終変数を定義するには、大文字のすべての文字を使用します。

ファイナルの解釈:

final variable :その値は変更できません

final method :オーバーライドできません

final class :拡張できません

final Parameter :呼び出し元の引数から受け取る値は変更できません

final Object Reference Variable :現在参照しているオブジェクト以外のオブジェクトを参照することはできません

于 2012-11-27T06:51:15.353 に答える
2

変数を静的としてのみ宣言すると、それが宣言されているクラスの1つ以上のインスタンスによって値が変更される可能性があります。

それらを静的ファイナルとして宣言すると、@Vulcanが言ったように定数を作成するのに役立ちます。どこからでもアクセスできるコピーは1つだけです。

于 2012-11-27T06:46:00.847 に答える
1

静的変数

  • 同じクラスに存在する静的メソッドを呼び出すことにより、静的変数の値を変更できます。
  • 静的変数の値は、このクラスから作成されたすべてのオブジェクトで同じになります。値を変更すると、そのクラスのすべてのオブジェクトが新しい値を取得し、古い値が失われます。
  • 値は複数回変更できます。

最終変数

この変数値は、次の2つの方法で初期化できます。

  1. 変数を宣言するとき。
  2. クラスコンストラクタが持つそのクラスのオブジェクトを作成するときthis.finalvariable = newfinalvariablevalue;

初期化されると、どの方法(静的または非静的)でも変更できません。

于 2016-10-26T18:45:40.983 に答える
1

静的メソッドまたはクラスは暗黙的にfinalです。このメソッドのコピーはすべてのオブジェクトに1つしかないため、サブクラスはコピーを変更するためのアクセス権を持っていません。親にメソッドがあり、サブクラスにこのメソッドを変更させたくないとします。親メソッドをfinalとして宣言するだけです。どうぞ。

class Parent {

    final void myMethod() {
        //No one can change this method from subclassess 
        //compiler works efficiently because it knows that this method will not change
    }
}

class Child extends Parent{
   //from this class I can use myMethod but I cannot override.
}
于 2017-04-15T14:55:03.823 に答える