クラス変数 メンバー変数 インスタンス変数 ローカル変数

メンバー変数

場所:メンバー変数は、メソッド本体の外側のクラスで定義された変数です

メンバー変数には次の 2 種類があります。

①静的に変更された \rightarrow クラス変数(静的変数)は、クラス名を介して直接呼び出すことができます

②静的に変更されない \rightarrow インスタンス変数は、オブジェクト名でインスタンス変数を呼び出すオブジェクトの後(メインメソッドの新しいオブジェクトの後)に作成する必要があります

要約: メンバー変数には、クラス変数と実際の変数が含まれます

クラス変数 (静的変数)

  1. static によって変更される変数は static 変数と呼ばれ、本質的にはグローバル変数です
  2. 格納場所:メソッド領域(共有データ領域)の静的領域に格納されるため、オブジェクトの共有データとも呼ばれます。
  3. ライフサイクル: クラス変数はクラスのロードとともに存在し、クラスの消失とともに消滅します
  4. 呼び出し方法: クラス変数はオブジェクトから呼び出すことができ、クラス名からも呼び出すことができます

【イラスト】

Java でのメソッド領域の場所は、次の 3 つの状況に分けられます。

  1.  java7以前は、メソッド領域はパーマネント世代(PermGen)に配置され、パーマネント世代とヒープは分離されていましたが、パーマネント世代のサイズは、JVM起動時に固定値に設定でき、イミュータブルです。 ;
  2.  java7 では、静的変数は永続世代からヒープに移動されます。
  3.  java8ではパーマネント生成が解除され、メソッドがメタスペース(Metaspace)に格納されます.メタスペースはまだヒープに接続されていませんが、物理メモリをヒープと共有しています.論理的には、ヒープ

インスタンス変数

  1. 格納場所: メンバー変数はオブジェクトにヒープ メモリに格納されるため、オブジェクト固有のデータとも呼ばれます。
  2. ライフサイクル: メンバー変数はオブジェクトの作成とともに存在し、オブジェクトのリサイクルとともに解放されます
  3. 呼び出し方法: メンバー変数はオブジェクトからのみ呼び出すことができます

ローカル変数

場所: クラスのメソッド本体で定義された変数 (メソッドの仮パラメーターであるか、メソッド本体で定義された変数がローカル変数であるか)

定義:メソッド、コンストラクタ、またはステートメント ブロックで定義された変数は、ローカル変数と呼ばれます。

格納場所:スタックメモリ内にローカル変数が存在し、動作範囲が終了すると変数空間は自動的に解放される

スコープ: メソッド本体の頭の中かっこから最後の中かっこまで、つまり、ローカル変数はこのメソッドでのみ呼び出すことができます

ライフ サイクル: 変数の宣言と初期化はメソッド内にあり、メソッドが終了すると、変数は自動的に破棄されます。

  1. ローカル変数は、関数内、ステートメント内などのローカルスコープでのみ定義され、それらが属する領域でのみ有効です。
  2. ローカル変数にはデフォルトの初期化値がありません
  3. クラスのメソッドで定義され、JVM のスタックに属し、宣言時にデフォルトの初期値はなく、初期化時に手動で割り当てる必要があります

クラス変数とローカル変数: クラス変数にはデフォルト値があり、初期化できない場合がありますが、ローカル変数は初期化する必要があります

おすすめ

転載: blog.csdn.net/y1120944224/article/details/128286529