Java-静的修飾子と最後のキーワード

変数、メソッド、またはコードブロック静的修飾子で変更さます

  • クラス内の静的変数、メソッド、またはコードブロックは、特定のオブジェクトではなく、クラスに属します。
  • クラスの静的メンバーは、クラスのオブジェクトを作成せずに、クラスの名前で直接使用できます。
  • 静的変数またはメソッドは、クラス変数またはクラスメソッドとも呼ばれます

ユーザー:

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()...

実行順序

  • 静的コードブロック->コードブロック->コンストラクター
  1. クラスがロードされると、JVMはすべての静的に変更された属性、メソッド、およびコードブロックを初期化します(自動的に順番に実行されます)
  2. コンストラクターを呼び出す前に、JVMはすべてのメンバー属性、メソッド、およびコードブロックを初期化します(自動的に順番に実行されます)

初期化シーケンスのため:静的変数と静的メソッドは静的メソッドでのみアクセスできます


最終キーワード

public final static String SURNAME="CAO";

最後の修飾子は、クラス、メソッド、および変数に適用できます

  • クラス、メソッド、変数に適用した場合のfinalの意味は異なりますが、本質は同じです。finalは不変を意味します。
  • finalとして宣言されたクラスは継承できません
  • 宣言されたメソッドはオーバーライドできません。クラスがfinalクラスの場合、そのすべてのメソッドは暗黙的にfinalです。
  • 宣言された変数には、初期値を割り当てる必要がありますそれは本質的に定数です;
  • 共通の最終クラス:文字列システムパッケージングクラス(整数、短、バイト、長...)

おすすめ

転載: blog.csdn.net/qq_44371305/article/details/113354332