静的 静的; クラスの属性、メソッド、コード ブロックを変更するために使用できます
クラスを作成するとき、そのクラスのオブジェクトの外観と動作を記述します。そのクラスのオブジェクトを作成するのが new でない限り、実際にはオブジェクトを取得することはできません。 new を実行してオブジェクトを作成する場合にのみ、データ ストレージ領域が割り当てられ、そのメソッドを呼び出すことができます。
新しいオブジェクト メソッドでは解決できない状況が 2 つあります。
1. 特定のドメインに別のストレージスペースを割り当てたいだけの場合は、作成するオブジェクトの数を考慮する必要はなく、オブジェクトを作成する必要さえありません。
2. 特定のメソッドが、このメソッドを持つクラスのオブジェクトに関連付けられていないことが望まれます。
つまり、このメソッドを呼び出すためにオブジェクトを作成する必要はありません。現時点では、static キーワードを使用して解決できます。
オブジェクトを静的であると宣言すると、このフィールドまたはこのメソッドがそのクラスのどのオブジェクトにも関連付けられないことを意味します。したがって、このクラスのオブジェクトを作成しなくても、静的メソッドを呼び出したり、静的フィールドにアクセスしたりできます。
静的属性 [クラス属性]: このクラスのすべてのオブジェクトによって共有される属性で、メモリ空間の一部のみを占有します
例:
Java コード
public class one{ static i=10; }
さて、2 つを再作成している場合でも、 1 つのオブジェクト、1 つの .i にも 1 つのストレージ スペースしかなく、これら 2 つのオブジェクトは同時にこの i を共有します
Java コード
one a1=new one(); one a2=new one();
ここで、a1 と a2 は両方とも同じストレージ スペースを指しているため、それらの値は
static メソッド [クラス メソッド]: クラス メソッドは、オブジェクトを表すために this と super を使用できなくなりました。クラス メソッドが親クラスを呼び出すか、サブクラスによってオーバーライドされるかは、クラス名にのみ関係します。例:
Java コード
public class two{ static void jia(){ one.i++; }
さて、この 2 jia() メソッドは、++ 演算子を介して静的データ i をインクリメントします。
典型的な新しいオブジェクトで呼び出すことができます:
Java コード
two t=new two(); t.jia();
このメソッドは静的であるため、次のように直接呼び出すことができます:
Java コード
two.one();
静的メソッドの重要な使用法は次のとおりです。任意のオブジェクトを作成して呼び出すことができます。
静的コード ブロック: 静的コード ブロックとも呼ばれ、クラス メンバーから独立したクラス内の静的ステートメント ブロックです。JVM ではどこにでも配置できます。クラスをロードするときにこれらの静的ステートメントを実行します。複数の静的コード ブロックがある場合、JVM はクラスに記述された順序でそれらを実行し、各コード ブロックは 1 回だけ実行されます。
例:
Javaコード
public class dome{ static { System.out.print("A"); } static { System.out.print("B"); } static { System.out.print("C"); } public static void main(String[] args) { System.out.print("E"); } }実行結果
ABCE