静的役割と使用方法

ディレクトリ
、静的変数
2、静的メソッド
3、静的コードブロック
4、静的クラス

これは、グローバル変数のJava言語概念静的「グローバル」または「静的」とは、メンバ変数とメソッドを変更するため、静的静的コードブロックを形成することができるではなく、を表します。そのクラスの任意のオブジェクト、それはオブジェクトクラス、静的変数のコピーではなく、クラスのシェアのすべてのインスタンスを宣言したときであること、それは、クラスの特定のインスタンスに依存しないの独立した静的メンバ変数とメンバメソッド修正。長いクラスがロードされると、Java仮想マシンは、ランタイムデータ領域でエリアクラス名を指定した方法に従って、それらを見つけることができるようになります。それは任意のオブジェクトを参照することなく、任意のオブジェクトの作成にアクセスする前に、したがって、静的オブジェクト。

時にはあなたは、クラスのメンバを定義したい、そのクラスの任意のオブジェクトの完全に独立を利用します。典型的には、クラスのメンバーは、そのオブジェクトのクラスを介してアクセスする必要がありますが、このようなA部材を作成することができ、それは特定のインスタンスを参照することなく、単独で使用することができます。キーワードスタティック(静的)とメンバーの宣言の前に、このようなA部材を作成することができるであろう。部材が静的として宣言された場合、そのクラスのすべてのオブジェクトが作成される前に、それは任意のオブジェクトを参照することなく、アクセスすることができます。あなたは、メソッドと変数はstaticとして宣言されていることができます。静的メンバの最も一般的な例は、主です()。プログラムが起動したときに、それがstaticとして宣言されているので、メインは、()と呼ばなければならないからです。

静的変数
クラス分類の静的メンバ変数を2分割することができるかどうかに応じて:一つは静的変数またはクラス変数と呼ばれ、静的変数を変更しているが、他のインスタンス変数と呼ばれ、静的変数を変更されません。違いは次のとおりです。

メモリ内の静的変数のためだけのコピー(メモリに保存)ローディングクラス中の静的変数のメモリ割り当てを完了するためのメモリ、JVMのみ静的割り当ては、直接アクセス(便宜上)にクラス名を使用することができ、また、オブジェクトによって実装されますアクセス(これは推奨されません)。

インスタンス変数のために、各インスタンスを作成し、第一のメモリは、インスタンス変数に割り当てられ、インスタンス変数は、互いに独立して(フレキシブル)の、メモリ内に複数のコピーを有することができます。

したがって、静的変数の一般的な使用が必要な場合、以下の二つの機能を達成します。

場合共有オブジェクトとの間の値

ときに簡単にアクセス変数

クラスの静的変数名の名前:それはアクセス構文は、静的メンバ変数へのアクセスは、クラス名を介してアクセスすることができ、アクセスを作成したクラスのインスタンスで静的メンバにすることはできません

静的メソッド
静的メソッドは、クラス名で呼び出すことができる、任意のインスタンスは、静的メソッドは、このスーパーのキーワードを使用することはできませんので、あなたが直接、静的メンバ変数なし、である(そのクラスのインスタンス変数とインスタンスメソッドにアクセスすることはできません、直接呼び出すことができますインスタンスメンバーが特定のオブジェクトに関連付けられているため、及び方法のメンバー)のメンバーは、唯一、静的メンバ変数とそのクラスのメンバメソッドにアクセスすることができます。この方法は、静的メソッドを実装しなければならず、抽象的抽象できないように、任意の静的インスタンスとは無関係です。一般的なクラスの静的メソッドは、メソッドの他のクラスの内部コールを容易にすることである、彼らは他の静的メソッドを呼び出すことができます。静的メソッドは、クラスの静的メソッドの内部では、一般に非静的なものとして宣言され、対応する必要がある場合にのみ、クラス、メソッド内で特別な方法です。

注:すべてのインスタンス変数への参照は、静的メソッドでは違法です。静的メンバーメソッド呼び出しの構文は次のとおりです。クラスの静的メソッド名(引数リスト...)。

修正するための静的な最終メンバー変数とメンバー・メソッドは、単にとして理解することができる「グローバル定数。」変数について一度値が変更されず、クラス名を介してアクセスすることができることを示しています。この方法の場合、クラス名によって表され、直接アクセスをカバーしていません。

静的ブロック
静的ブロックは、静的ブロック、クラス内の独立した文静的クラスメンバーのブロックと呼ばれる、複数存在してもよく、位置が容易に任意のインビボ方法ではないが、置くことができ、JVMは、これらの静的負荷にクラスを実行しますそれらはクラスに現れる順序で連続して実行するための静的ブロック、JVM複数の場合、コードブロックは、各コードブロックは、一度だけ実行されます。

クラスの静的は、
私たちはものの種類は、通常は修正静的な内部クラスがネストされていることを静的な変更を使用する場合、一般的にJavaクラスは、静的クラスに変更されていません。しかし、そのようではないたくさんの実用的な作品で、その上の因子の使用を制限し、など様々な理由に起因します。しかし、それが値を持たないと言うことではありません。主な方法は、すべてのJavaソース・ファイルに設定されている場合、このような試験中にプログラムのタイムコードなどの静的内部クラスは大きな価値があるいくつかの特別なケースでは、それは余分なコードの多くが存在し、そして最も重要になりますこれは、それ自体は、この方法を習得する必要はありません。ただ形ですが、あまりmainメソッドと決してしないだろう、Java用のメインプログラムコードファイルです。この場合、この方法は、主静的内部クラスに書き込むことができるので、各マスタJavaソースファイルのない類似の方法に設定されています。これは、コードをテストするのに便利です。いくつかの大規模なアプリケーション開発では、一般的に使用される技術です。

静的な内部クラスだけでなく、一般的な内部クラスの違いを制限します:

静的内部クラスは、外部クラスのアクセス非静的メンバーは、それが、非静的内部クラスは、クラス外静的および非静的メンバを外部クラスの唯一のアクセス静的メンバーにアクセスすることができないことができます。一般に、非静的内部クラスの定義は、同時にキーワード最終変形の静的メンバを有し、静的方法の観点から、最終によって修飾することができない、それは非静的内部クラス内の静的メンバ変数と静的メンバメソッドを定義していません。しかし、あなたは、静的な内部クラスに静的メンバ変数とメンバメソッドを定義することができます。

静的内部クラスは、静的な内部クラスのオブジェクトが暗黙的にその外部オブジェクトを作成するクラス、ポイント外部参照を保持するのではなく、外側のクラスへの参照を持っていません。一般的な非静的内部クラスは、あなたが自由にメンバ変数やメソッドをプライベートに変更された場合でも、クラス外のメンバ変数とメンバメソッドにアクセスすることができます。しかし、静的な内部クラスは、オブジェクトクラスの静的内部クラスの外部から非静的メンバ変数とメンバメソッドにアクセスできません。例えば、外側のクラスの定義二つの変数、非静的変数、静的変数は、その後、静的内部クラス、メンバメソッド内または他の場所の両方が、唯一の外側のクラス静的に参照することが可能です変数は、非静的変数にアクセスすることはできません。

静的な内部クラスは、外部クラスのインスタンスにバインドされた静的な内部クラスのインスタンスを作成する必要はありません。典型的には、クラスの内部クラスの創立メンバー非静的内部クラスのインスタンスは、外側のクラスのインスタンスにバインドされなければならない必須の規定がある場合。言い換えれば、クラスの外側の第1非static内部クラスを作成する前に、あなたは、クラス内のオブジェクトを作成するために、新しいキーワードを使用します。あなたは、外部クラスのstatic内部クラスを定義するために、ある外部クラスのインスタンスにバインドする必要はありません静的な内部クラスを作成する場合でも、あなたは内部クラスのインスタンスを作成するために、新しいキーワードを使用する必要はありません。

非静的な内部クラスの構文を作成します。

OuterClass outer = new OuterClass(); 
OuterClass.InnerClass inner  = outer.new InnerClass();

静的な内部クラスの構文を作成します。

OuterClass.NestedStaticClass staticInner = new OuterClass.NestedStaticClass();
公開された21元の記事 ウォン称賛10 ビュー8095

おすすめ

転載: blog.csdn.net/weixin_44997483/article/details/102851186