JAVAキーワードstatic


JAVA staticキーワードは、変数(Field)、メソッド(Method)、コードブロック、内部クラス(Class)を修飾することができます.
1、クラスのロードに伴ってロードされます.つまり、静的はクラスの消失に伴って消え、彼のライフサイクルが最も長いことを示します.
2、対象の存在より優先する.(静的に先に存在し、オブジェクトの後に存在します.)
3、すべてのオブジェクトによって共有される
4,直接クラス名で呼び出すことができる
1)static変数
staticがメンバー変数(Field)を修飾すると、その変数がJVMの静的ドメインに作成され、メモリにコピーが1つしかなく、クラスがJVMによって最初にロードされたときにのみ初期化されます.
staticメンバー変数の初期化順序は、定義された順序で初期化されます.
2)staticコードブロック
staticがコードブロックを修飾すると、クラス(Class)が初めてJVMにロードされると、staticブロックの順序で各staticブロックが実行され、1回のみ実行されます.
3)staticメソッド
static修飾メソッドの場合、このメソッドは任意のオブジェクトに依存せず(thisメソッドを呼び出すことはできません)、非静的/メソッドが呼び出されるには特定のオブジェクトに依存しなければならないため、静的メソッドではクラスの非静的メンバー変数および非静的メンバーメソッドにアクセスできません.
4)static内部クラス
staticはクラス(Class)を修飾することはできませんが、クラス内のクラス(内部クラス)を修飾することができます.修飾後の内部クラスは直接作成できます.
非静的static内部クラスではstatic変数の存在は許可されていません
public class TestRun {
	public static void main(String[] args) {
		A.B b = new A.B();
		
//		A1.B1 b1 = new A1.B1();          ,     A1       B1
		A1 a1 = new A1();
		A1.B1 b1 = a1.new B1();
	}
}

class A{
	static class B{
		
	}
}

class A1{
	public class B1{
		
	}
}