staticは「グローバル」または「静的」を意味し、はメンバー変数とメンバーメソッドを変更するために使用され、静的コードブロックを形成することもできますが、Javaがあります言語にはグローバル変数の概念はありません。静的によって変更された
メンバー変数とメンバーメソッドは、クラスのどのオブジェクトからも独立しています。つまり、クラスの特定のインスタンスに依存せず、クラスのすべてのインスタンスによって共有されます。 このクラスがロードされている限り、
Java仮想マシンはクラス名に基づいてランタイムデータ領域のメソッド領域でそれらを見つけることができます。したがって、静的オブジェクトは、そのオブジェクトが作成される前でも、オブジェクトを 参照 せずにアクセスできます。
public で変更された静的メンバー変数とメンバー メソッドは、本質的にはグローバル変数とグローバル メソッドです。そのクラスのオブジェクトが宣言されると、静的変数のコピーは生成されませんが、クラスのすべてのインスタンスが共有します。同じ静的変数 。
静的変数の前にプライベート変更を付けることができます。これは、この変数がクラスの静的コード ブロック、またはクラスの他の静的メンバー メソッドで使用できることを示します (もちろん、非静的メソッドでも使用できます)メンバー メソッド - ナンセンス)、ただし、他のクラスのクラス名を通じて直接参照しないことが重要です。実際、プライベートはアクセス許可の制限を意味し、静的はインスタンス化せずに使用できることを意味し、理解しやすいことを理解する必要があります。 static の前に other アクセス権キーワードを追加した場合の効果も同じです。
静的ないくつかの特徴:
(1) 静的変数は静的変数とも呼ばれます。静的変数と非静的変数の違いは、静的変数はすべてのオブジェクトによって共有され、保存されることです。メモリ内にはコピーが 1 つだけあり、クラスが最初にロードされた場合にのみ初期化されます。非静的変数はオブジェクトによって所有され、オブジェクトの作成時に初期化されます。複数のコピーがあり、各オブジェクトが所有するコピーは相互に影響しません。
(2) statice には 2 つの機能があります。1 つ目は、作成されるオブジェクトの数に関係なく、またはオブジェクトがまったく作成されない場合でも、特定のドメインに 1 つのストレージ スペースのみを割り当てることです。メソッドは、そのオブジェクトのいずれかが関連付けられています。つまり、オブジェクトを作成せずにメソッド内のメソッドを呼び出すことができます。
(3)被statice修饰的任何成员变量和成员方法独立于该类的任何对象,它不依赖类的任何对象,对所有实例共享。
(4)静态变量在内存中只有一个拷贝,jvm只对静态分配一次内存,加载类的过程中就完成对静态变量的内存分配,可用类名直接访问。
(5)静态代码是和class绑定的,class装载成功就表示执行了你的静态代码,而且以后不会再走这套静态代码了。Class.forName()的作用是要求JVM查找并加载指定的类,也即是说JVM会执行该类的静态代码段。
(6)静态的方法属性初始化,是在加载类的时候初始化。而非静态方法属性初始化。
示例:
public class Test { static int i; static { i++; System.out.println("outt i:"+i); } static void outi() { i++; System.out.println("output i:"+i); } public static void main(String [] argStrings) { Test test=new Test(); test.outi(); } }
输出结果:
outt i:1 output i:2
以上がJava キーワード static の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。