静的静的コードブロックの使用法と注意事項

1. Javaクラスの静的コードブロックの実行回数 

1. クラス読み込みの初期フェーズでは、すべての静的ブロックとフィールドが収集され、クラス コンストラクターで実行されます。静的ブロックは 1 回だけ実行され、JVM はそれが 1 回だけ実行されることを保証します。

2. コード、ツール クラスで静的コード ブロックを使用する

public class HttpUtil {
    static {
        //创建HTTP的连接池管理对象
        PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
        //将最大连接数增加到200
        connectionManager.setMaxTotal(200);
        //将每个路由的默认最大连接数增加到100
        connectionManager.setDefaultMaxPerRoute(100);
        HTTP_CLIENT = HttpClients.custom().setConnectionManager(connectionManager).build();
    }
  
}

3. 静的コード ブロックの使用 
1. プロジェクトはいくつかのデータを初期化し、2 か所で処理できます。 
   まず、プロジェクトが開始されると、特定のクラスをロードし、データをデジタル化します (基本データやデータベース接続プールの初期化など)。 
   2 つ目は、ツール クラスで静的なコード ブロックを使用することです。ツール クラスに初めてアクセスすると、最初に初期化され (1 回だけ実行され)、静的なグローバル属性に保存されます。他のクラスがそれにアクセスすると、再度、初期化データを直接使用します (redis データベースへの接続、接続プールの初期化など)。

4. 親クラスとサブクラスの実行順序


class StaticDemo{

//静态代码块
static {
System.out.println("父类静态代码块被执行");
}

//非静态代码块
{
System.out.println("父类非静态代码块被执行");
}
//构造方法
StaticDemo(){

System.out.println("父类构造方法被执行");
}
}
public class StaticTest extends StaticDemo {

/**
* 静态代码块的特点:
* 随着类的加载而执行,而且只执行一次
* 静态代码块额执行顺序优先于main函数
*/
static {

System.out.println("子类静态代码块被执行");
}
//非静态代码块
{
System.out.println("子类非静态代码块被执行");
}
StaticTest(){
System.out.println("子类构造方法被执行");
}

public static void main(String[] hq){
System.out.println("main函数");
new StaticTest();
}
}

è¿éåå¾çæè¿°

概要: 静的コード ブロックは、クラスがロードされるときに実行され、一度だけ実行されます。new StaticTest() が実行を開始すると、最初に親クラスの静的コード ブロックが実行され、次にサブクラスの静的コード ブロックが実行されます。すべての静的コード ブロックが実行されると、出力ステートメントが実行されます。 main 関数 (出力ステートメントが new StaticTest() の前にあることが前提です)、その後、親クラスの非静的コード ブロックが実行され、続いて親クラスのコンストラクターが実行され、その後に非静的コードが続きます。サブクラス内のブロック、そして最後にサブクラス クラス内のコンストラクター メソッド。

おすすめ

転載: blog.csdn.net/sinat_26494147/article/details/101159725