変数、メソッド、またはコードブロックの静的修飾子で変更されます
- クラス内の静的変数、メソッド、またはコードブロックは、特定のオブジェクトではなく、クラスに属します。
- クラスの静的メンバーは、クラスのオブジェクトを作成せずに、クラスの名前で直接使用できます。
- 静的変数またはメソッドは、クラス変数またはクラスメソッドとも呼ばれます
ユーザー:
public class User {
// 多个代码块执行是顺序执行, 代码块在创建对象之前由 JVM 自动调用
{
System.out.println("代码块1...");
}
{
System.out.println("代码块2...");
}
// 在调用静态变量和静态方法之前由JVM自动调用,顺序调用
static {
System.out.println("静态代码块1...");
}
static {
System.out.println("静态代码块2...");
}
// 静态变量、类变量
static String WORD = "静态变量word...";
// 静态方法、类方法
public static void show() {
System.out.println("静态方法show()...");
}
//成员方法
public void eat() {
System.out.println("成员方法eat()...");
}
//构造方法
public User() {
System.out.println("构造方法...");
}
}
テスト:
public class Test {
public static void main(String[] args) {
new User();
}
}
結果:
静态代码块1...
静态代码块2...
代码块1...
代码块2...
构造方法...
テストの場合:
public class Test {
public static void main(String[] args) {
System.out.println(User.WORD);
User.show();
}
}
結果は次のとおりです。
静态代码块1...
静态代码块2...
静态变量word...
静态方法show()...
実行順序
- 静的コードブロック->コードブロック->コンストラクター
- クラスがロードされると、JVMはすべての静的に変更された属性、メソッド、およびコードブロックを初期化します(自動的に順番に実行されます)
- コンストラクターを呼び出す前に、JVMはすべてのメンバー属性、メソッド、およびコードブロックを初期化します(自動的に順番に実行されます)
初期化シーケンスのため:静的変数と静的メソッドは静的メソッドでのみアクセスできます
最終キーワード
public final static String SURNAME="CAO";
最後の修飾子は、クラス、メソッド、および変数に適用できます。
- クラス、メソッド、変数に適用した場合のfinalの意味は異なりますが、本質は同じです。finalは不変を意味します。
- finalとして宣言されたクラスは継承できません。
- 宣言されたメソッドはオーバーライドできません。クラスがfinalクラスの場合、そのすべてのメソッドは暗黙的にfinalです。
- 宣言された変数には、初期値を割り当てる必要があります。それは本質的に定数です;
- 共通の最終クラス:文字列システムパッケージングクラス(整数、短、バイト、長...)