Java にはグローバル変数の概念はありませんが、Java では、static は「グローバル」または「静的」を意味します。メンバー変数とメンバー メソッド、そしてもちろんコード ブロック。
Java はメモリをスタック メモリとヒープ メモリに分割します。スタック メモリはいくつかの基本的な種類の変数、配列、オブジェクト参照を格納するために使用され、ヒープ メモリは主に一部のオブジェクトを格納します。 JVM がクラスをロードするとき、クラスに静的に変更されたメンバー変数とメンバー メソッドがある場合、これらの「固定」機能を使用して、固定サイズのメモリ領域がこれらのメンバー変数とメンバー メソッド用に固定された場所に開かれます。非常に便利にアクセスできます。同時に、静的メンバー変数とメンバー メソッドがスコープ外にならない場合、それらのハンドルは変更されません。同時に、static に含まれる「静的」という概念は、修復不可能、つまり、その場所を変更すると、クリーンアップしても元の状態に戻らないことを意味します。戻ってくる。
static によって変更されたメンバー変数とメンバー メソッドは、特定のインスタンス変数に依存しません。つまり、クラスのすべてのインスタンスで共有されます。すべてのインスタンスの参照は同じ場所を指しており、いずれかのインスタンスを変更すると、他のインスタンスも変更されます。
static は、クラス名を通じて直接アクセスできるメンバー変数およびメンバーメソッドを変更するために使用できます。
ClassName.propertyName
アウトスルー ’ ’ s ’ ‐ ‐ ‐ ‐ down‐‐‐‐‐‐ to ClassName.methodName(...)
(ここ数日のコードブロックの使用については注意してください)
2.1. 静的変数
static によって変更される変数は静的変数と呼ばれ、static によって変更されない変数はインスタンス変数と呼ばれます。両者の違いは次のとおりです。
静的変数は、クラスがロードされるときに初期化され、JVM はクラスのすべてのインスタンスに一度だけメモリを割り当てます。静的変数を共有し、クラス名を直接渡してアクセスできます。
ただし、インスタンス変数は異なります。インスタンスが作成されるたびに、インスタンスとともに存続し、消滅します。
したがって、私たちは通常、オブジェクト間でデータを共有するためと、アクセスを容易にするための 2 つの状況で静的変数を使用します。
2.2. 静的メソッド
静的に変更されたメソッドは静的メソッドと呼ばれ、クラス名を通じて直接呼び出します。クラスがロードされたときに存在するため、インスタンスに依存せず、静的メソッドを実装する必要があります。つまり、抽象メソッドにすることはできません。
静的メソッドは、本当に必要な場合にのみメソッドを静的として宣言するクラス内の特別なメソッドです。たとえば、Math クラスのメソッドはすべて静的です。
2.3. 静的コードブロック
静的コードブロックはクラスがロードされると実行され、どこにでも配置できます。
Static には多くの機能がありますが、いくつかの欠点もあります。
1. 静的変数のみを呼び出すことができます。
2. 静的メソッドのみを呼び出すことができます。
3. this と super はいかなる形式でも引用できません。
4. 静的変数は定義時に初期化する必要があり、初期化時間は非静的変数よりも早くなければなりません。
要約: 変数、メソッド、またはコード ブロックのいずれであっても、静的に変更されている限り、クラスがロードされた時点で「準備完了」になります。つまり、使用できるか実行されています。オブジェクトがなくても実行できます。逆に、static がない場合は、オブジェクト インスタンスに依存する必要があります。
Javaを学習している学生の皆さん、注意してください! ! !
学習プロセス中に問題が発生した場合、または学習リソースを入手したい場合は、Java 学習交換グループ (159610322) に参加してください。一緒に Java を学びましょう!
以上がJavaのキーワード静的インスタンスの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。