JAvaでのローカル変数、メンバー変数、静的変数
ローカル変数、メンバー変数、静的変数(グローバル変数)の定義、役割ドメインまたは宣言サイクル、アクセス権、デフォルト値、メモリの割り当ての違いについて説明します.
ローカル変数
メンバー変数(インスタンス変数)
静的変数(クラス変数またはグローバル変数)
宣言または定義
メソッドボディ(メソッド、構築メソッドまたはコードブロック)の内部、すなわち「{}」に宣言
宣言はクラス内で、メソッドボディ(メソッド、構築メソッドまたはコードブロック)の外にあります.
クラスでstaticキーで宣言し、メソッドボディ(メソッド、構築メソッド、コードブロック)の外
役割ドメインまたはライフサイクル
メソッドまたはブロックが実行されると作成され、「{}」が実行されると解放されます.
インスタンス変数の作成時に作成、オブジェクトの破棄時に解放
クラスが何個のオブジェクトを作成しても、クラスはクラス変数のコピーのみを持ち、プログラムが開始されると作成され、終了されると解放されます.
アクセス権
修飾子は使用できません.メソッドボディに表示されます.
修飾子、public修飾子クラスが表示され、private修飾本クラスが表示されます.
修飾子はありますが、publc/private、final、staticタイプの定数に修飾されることが多いです.
初期化値またはデフォルト
デフォルト値はありません.割り当てを初期化する必要があります.
デフォルト値、参照タイプnull、その他は基本データ型デフォルト値
デフォルト値、参照タイプnull、その他は基本データ型デフォルト値
メモリ割当て
ローカル変数は、メソッド呼び出し時にスタックメモリ領域に存在します.
メンバー変数は、クラスがインスタンス化された後、スタックメモリに存在します.
静的変数はメモリの静的ストレージ領域に格納されます.
ローカル変数の例:
メンバー変数、静的変数の例:
注意:静的変数は、クラスの名前で呼び出すことができます.
ローカル変数
メンバー変数(インスタンス変数)
静的変数(クラス変数またはグローバル変数)
宣言または定義
メソッドボディ(メソッド、構築メソッドまたはコードブロック)の内部、すなわち「{}」に宣言
宣言はクラス内で、メソッドボディ(メソッド、構築メソッドまたはコードブロック)の外にあります.
クラスでstaticキーで宣言し、メソッドボディ(メソッド、構築メソッド、コードブロック)の外
役割ドメインまたはライフサイクル
メソッドまたはブロックが実行されると作成され、「{}」が実行されると解放されます.
インスタンス変数の作成時に作成、オブジェクトの破棄時に解放
クラスが何個のオブジェクトを作成しても、クラスはクラス変数のコピーのみを持ち、プログラムが開始されると作成され、終了されると解放されます.
アクセス権
修飾子は使用できません.メソッドボディに表示されます.
修飾子、public修飾子クラスが表示され、private修飾本クラスが表示されます.
修飾子はありますが、publc/private、final、staticタイプの定数に修飾されることが多いです.
初期化値またはデフォルト
デフォルト値はありません.割り当てを初期化する必要があります.
デフォルト値、参照タイプnull、その他は基本データ型デフォルト値
デフォルト値、参照タイプnull、その他は基本データ型デフォルト値
メモリ割当て
ローカル変数は、メソッド呼び出し時にスタックメモリ領域に存在します.
メンバー変数は、クラスがインスタンス化された後、スタックメモリに存在します.
静的変数はメモリの静的ストレージ領域に格納されます.
ローカル変数の例:
public class TestPeople {
public void people() {
int age = 0;
//int age; //
age = age + 18; // initialized
System.out.println("age=" + age);
}
}
メンバー変数、静的変数の例:
public class TestPeople {
public String name; //
private int age;//
public static String sex=" "; //
private static final String BIRTHDAY="xx xx "; //
}
注意:静的変数は、クラスの名前で呼び出すことができます.
TestPeople.sex