この記事は主に Java の静的および非静的関連の内容を紹介しています。編集者はそれを必要とする友人に共有します。
静的変数と非静的変数の違いについて
1. 静的に変更された変数は、クラス変数、またはグローバル変数、またはメンバー変数と呼ばれます。クラスがロードされると、メンバー変数が初期化され、クラスに関連付けられます。クラスが存在する限り、静的変数は存在します。非静的変更メンバー変数は、新しいオブジェクトが作成されるときに記憶域を分割し、このメンバー変数は現在のオブジェクトによってのみ所有されます。
2. 静的変更された変数は、メインメソッドの前にメモリのデータ共有領域にロードされます。非静的変数をロードする場合は、変数をロードする必要があります。ヒープメモリ。
3. 静的変数は記憶域を個別に分割し、特定のオブジェクトにバインドされません。記憶域はクラスの各オブジェクトによって共有されます。静的変数の値はメソッド領域に 1 回読み込まれますが、非静的変数はオブジェクトの作成時に何度も読み込まれます。作成されるたびにコピーが作成されます。
4. オブジェクトがメンバー変数を参照する場合、それはクラス名.変数名を通じて直接呼び出されます。オブジェクトがインスタンス変数を参照する場合、オブジェクト名.変数名を通じてのみ呼び出すことができます。
5. クラス内のメンバー変数を呼び出す場合は、直接呼び出すか、クラス名.変数名という形式で呼び出します。インスタンス変数の場合は、これを使用するか、直接呼び出します。
静的メソッドと非静的メソッドの違いについて
1. 静的修正メソッドも静的メソッドと同じです。共有使用のためにメインメソッドの前にメソッド領域にロードされます。
2. 静的静的メソッドでは this または super キーワードを使用できません。静的メソッドはオブジェクトが作成される前にロードされたメソッドであり、this と super はこのクラスのオブジェクトを指します。または、親クラスのオブジェクトに非静的メソッドが属し、そのメソッド内で this と super を使用できます。
3. 静的メソッドは、オブジェクト.メソッド名またはクラス名.メソッド名を使用して呼び出すことができます。非静的メソッドは、オブジェクトの作成後にのみ呼び出すことができます。
4. 静的メソッドは一度ロードされ、すべてのオブジェクトによって共有されます。非静的メソッドはオブジェクトの数だけコピーされ、各オブジェクトは独自のコピー メソッドのみを呼び出すことができます。
5. オブジェクトが非静的メソッドを呼び出す場合、スレッドの安全性の問題は考慮されませんが、静的メソッドを呼び出す場合は、セキュリティの問題を考慮する必要があります。静的メソッドのコピーは 1 つしかないためです。オブジェクトのメソッドには独自のメソッドがあります。
6. 同じクラス内では、静的メソッドはクラス内の静的メンバーにのみアクセスできます。非静的メソッドは、非静的メソッドにアクセスできます (クラス名を使用して非静的メソッドを呼び出すか、このクラスのオブジェクトを作成します)。
概要
以上がJava の静的と非静的の違いの簡単な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。