[JAVA]変数2-変数のスキャン


変数のスキャン
変数のスキャン
Javaの変数は、宣言された場所(ブロック)とキーワードによって参照可能な範囲とライフサイクルを決定します.これは主にローカル変数、インスタンス変数、クラス変数に分けられます.
ローカル変数
ローカル変数(領域変数)は、クラスやオブジェクトのメソッドブロックや初期化ブロックなど、ブロック内部でのみ使用される変数です.
ライフサイクル
ブロックを離れると、ローカル変数はライフサイクルを終了し、呼び出すことはできません.これは、メソッドブロックを含むすべてのブロックに適用されます.
for(int i = 0 ; i < N ; i++)
{
	int cnt = i;
}
//컴파일 에러, 두 변수 모두 for 블럭 이후 소멸됨
System.out.println(i + cnt);
きほんへんすう
ローカルのデフォルト変数はデフォルト値を初期化しません.(ゴミ値としては使用できません)そのため、明示的に初期化する必要があります.そうしないと、コンパイルエラーが発生します.
宣言された基本形状変数は、スレッドのスタックメモリに格納され、ライフサイクルの終了時にメモリから削除されます.
インスタンス変数
インスタンス変数とは、クラスの動的属性として宣言された変数、およびstaticキーワードのないクラスの変数属性を指す.
ライフサイクル
オブジェクトがnewキーワードで作成されると、インスタンス変数はお尻にメモリを割り当てます.オブジェクトはライフサイクルとともに使用され、オブジェクトが期限切れでGCで回収されたときにメモリから削除されます.
きほんへんすう
インスタンス変数として宣言される基本変数の初期値は、falseまたは0です.
クラス変数
クラス変数(静的変数)は、staticキーワードを作成することによって静的に宣言される変数です.
ライフサイクル
クラス変数は、作成したクラスのロード中にメモリを追加します.したがって、クラスを参照しない場合、GCは回収され、クラスは破棄される.
静的プロパティはオブジェクトではなくクラスに依存するため、同じクラスで作成されたすべてのオブジェクトの値が共有されます.また、オブジェクトに依存しないため、オブジェクトを作成することなく呼び出すことができます.
class A{
	static int a;
}
//...
A var1 = new A();
A var2 = new A();
var1.a++;
var2.a++;
//2
System.out.println(var1.a);
//2
System.out.println(var2.a);
//2
System.out.println(A.a);