インスタンス変数とクラス変数の定義
メンバー変数を宣言する場合、キーワード static で変更されたものはクラス変数と呼ばれ、クラス変数は静的変数または静的変数とも呼ばれます。一方、キーワード static で変更されなかったものはインスタンス変数と呼ばれます。
例えば:
classMain{floatx;//インスタンス変数 staticinty;//クラス変数}
知らせ:
キーワード static は変数の型の前に置く必要があります。
インスタンス変数とクラス変数の違い
1. 異なるオブジェクトのインスタンス変数は互いに異なります。
クラスは new 演算子を使用して複数の異なるオブジェクトを作成できます。これらのオブジェクトには異なるメンバー変数が割り当てられ、1 つのオブジェクトのインスタンス変数を変更しても、他のオブジェクトには影響しません。オブジェクトの。
2. すべてのオブジェクトはクラス変数を共有します。
クラス内にクラス変数がある場合、new 演算子を使用して複数の異なるオブジェクトを作成する場合、これらのオブジェクトに割り当てられたクラス変数は同じメモリを占有します。1 つのオブジェクトのクラス変数を変更すると、他のオブジェクトのクラスに影響します。つまり、オブジェクトはクラス変数を共有します。
3. クラス名を通じてクラス変数に直接アクセスします。
Java プログラムが実行されると、クラスのバイトコード ファイルがメモリにロードされます。クラスがオブジェクトを作成しない場合、クラス内のインスタンス変数にはメモリが割り当てられません。ただし、クラス内のクラス変数には、クラスがメモリにロードされるときに、対応するメモリ空間が割り当てられます。このクラスがオブジェクトを作成する場合、異なるオブジェクトのインスタンス変数は互いに異なります。つまり、異なるメモリ空間が割り当てられ、クラス変数はすべてのオブジェクトでクラス変数、つまりクラス変数を共有しなくなります。すべてのオブジェクトは同じです。クラス変数によって占有されているメモリ空間は、プログラムが終了するまで解放されません。
したがって、クラス変数には、オブジェクトを通じてだけでなく、クラス名を通じて直接アクセスすることもできます。一方、オブジェクトのインスタンス変数には、クラス名を使用せずに、オブジェクトを通じてアクセスできます。