Java クラスの静的メンバー、静的コード ブロック、通常のメンバー、通常のコード ブロック、およびコンストラクター メソッドの初期化と実行の順序の詳細な説明
今日は「Javaプログラミングの思考 (第4版中国語版)」を読んで、クラス内のメンバーの初期化に関する知識ポイントを復習しました。印象を深め、他の人に参考にしてもらうために、本の例を参考に次のコードを取得するように修正します:
ファイル名: HelloWorld.java
パッケージ名: main
package main; class Bowl { Bowl(int marker){ System.out.println("Bowl("+marker+")"); } void f1(int marker){ System.out.println("f1("+marker+")"); } } class Table{ static Bowl bowl1 = new Bowl(1); public Table() { System.out.println("Table()"); bowl2.f1(1); } void f2 (int marker){ System.out.println("f2("+marker+")"); } static Bowl bowl2 = new Bowl(2); } class Cupboard{ { System.out.println("Cupboard类普通代码块执行"); } Bowl bowl3 = new Bowl(3); // 注意,此处不是静态成员 static Bowl bowl4 = new Bowl(4); static{ System.out.println("Cupboard类静态代码块执行"); } public Cupboard() { // TODO Auto-generated constructor stub System.out.println("Cupboard()"); bowl4.f1(2); } void f3(int marker){ System.out.println("f3("+marker+")"); } static Bowl bowl5 = new Bowl(5); } public class HelloWorld { public static void main(String args[]){ System.out.println("Creating new Cupboard() in main"); new Cupboard(); table.f2(1); cupboard.f3(1); } static Table table = new Table(); static Cupboard cupboard = new Cupboard(); }
分析してみましょうプログラムの動作。
1. まず、Java 仮想マシンが main メソッドを実行したい場合は、まず HelloWorld クラスをロードする必要があります
2 クラス HelloWorld には静的データ (静的メンバーのみ) が含まれていることがわかり、静的メンバーを初期化します
まずは
【1】 static Table table = new Table(); そこでTableクラスをロードする必要があります。クラスに静的メンバーが含まれていることがわかり、定義された順序に従って初期化操作が実行されます
【2】static Bowl Bowl1 = new Bowl(1); 出力: Bowl(1)
【3】static Bowl Bowl2 = new Bowl(2); 出力: Bowl(2)
【4】コンストラクターTable()、出力: Table() と f1(1)
2番目
【1】 static Cupboard cupboard = new Cupboard(); Cupboard クラスをロードする必要があります。このクラスには静的データ (静的メンバーと静的コード ブロックを含む) が含まれていることがわかり、初期化操作は 2 つの
[2] static Bowl Bowl4 = new Bowl(4); によって定義された順序に従って実行されます。 (4)
[3]
static{
System.out.println("食器棚クラスの静的コードブロックの実行");
}
出力:食器棚クラスの静的コードブロックの実行
【4】 static Bowl Bowl5 = new Bowl(5) ); 出力: Bowl(5 )
静的メンバーが初期化された後、new を通じて オブジェクト が生成されます。クラスにはメンバ定義の代入と通常のコードブロックが含まれていることが分かり、定義された順番に従って初期化操作が行われる
【1】
{
System.out.println("Cupboardクラスの通常のコードブロックの実行");
}
出力:食器棚クラスの通常のコードブロック実行
【2】ボウルボウル3 = new Bowl(3);出力:ボウル(3)
【3】コンストラクターCupboard()、出力:Cupboard()とf1( 2)
3. mainメソッドを入力します
【1】System.out.println("Creating new Cupboard() in main"); 出力: mainに新しいCupboard()を作成します
【2】new Cupboard(); Cupboard クラスにはメンバー定義代入と通常のコード ブロックが含まれていることがわかり、初期化操作はこの 2 つによって定義された順序に従って実行されます。出力: Cupboard クラスの通常のコード ブロックの実行と Bowl(3)
[3] コンストラクター Cupboard()。 , 出力:Cupboard() と f1(2)
【4】 table.f2(1); 出力:f2(1)
【5】 cupboard.f3(1); まとめると、プログラムの出力結果は次のとおりです:
Bowl(1 )
Bowl(2)
Table()
f1(1)
Bowl(4)
Cupboardクラスの静的コードブロックの実行
Bowl(5)
Cupboardクラスの通常のコードブロックの実行
Bowl(3)
Cupboard()
f1 (2)
mainで新しいCupboard()を作成
Cupboardクラスの通常のコードブロック実行
Bowl(3)
Cupboard()
f1(2)
f2(1)
f3 (1)
コンストラクターメソッドの初期化です。
以上がJava クラスの静的メンバー、静的コード ブロック、通常のメンバー、通常のコード ブロック、およびコンストラクター メソッドの初期化と実行の順序の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
