静的構造とコードブロックのコードブロックの間の差

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/CronousGT/article/details/78390933
パッケージGT;

/ **
* 2017年10月29日ON Cronousによって作成。
コードブロックのコードと構成の静的ブロックとの間の差*
* /
パブリッククラスday01 {

静的な無効メインパブリック(文字列[]引数){
人P1が( "トム")新しい新しい人数=、
人物P2が人新しい新規( "ジェリー")=;
p1.sayHello();
p2.sayHello();
}
}

人{クラス
プライベート文字列名;
静的int型I = 2; //静的変数
者(){}
人(文字列名){
this.name =名;
}
//静的ブロック
静的{
System.out.printlnは( "来て!" );
//ここでは、静的変数の値を変更するように、クラス初期化動作を行う
I = I + 1;
}
sayHello公開を無効(){
System.out.printlnは( "NAME =" +名+ "I =" + I);
}
}
次のようにコンソール出力は、次のとおりです。

私が入って来ました!
=トム名、I =。3
名=ジェリー、I =。3

私たちは、コンソールの出力は、クラスの役割の静的な部分をブロックすることを理解することができ、それが唯一の私たちは、静的変数の例を使用し、ここで、初期クラスに対して一度実行され、我々は初期化

私は、私が同じである後に作成されたすべてのオブジェクトの値が3であるの値を初期化します。

 

私たちは、コードブロック構造を見てみましょう

GTパッケージ;

/ **
* 2017年10月29日Cronous ONすることによって作成されます。
コードブロックのコードと構成の区別*静的ブロック
* /
パブリッククラスday01 {

パブリック静的無効メイン(文字列[] args){
人新しい新規人物P1 =( "トム");
人物P2人新しい新規( "ジェリー")=;
//p1.sayHello();
//p2.sayHello();
}
}

クラス人{
プライベート文字列名;
人(){}
人(文字列名){
this.name =名;
}
//コードブロック構成
{
クライ();
}
公共ボイドクライ(){
System.out.printlnは( "しゃべり!!!" +名);
}
公共ボイドのsayHello(){
System.out.println( "NAME ="名前+);
}
}
:ここでは、我々はp1.sayHello()とp2.sayHello()すべてコメントアウトし、次のようにコンソールが印刷されていますことを確認
しゃべりを!ヌル
しゃべり!ヌル

各オブジェクト記述が最初のオブジェクトの初期化のために設定初期化コードブロックの内容を呼び出す、および名前によって記述することができる=ヌルブロックのコンテンツは、優先コンストラクタを実行するように構成されています。

次のように要約:

主に1つのクラス初期化動作のために、コードの静的ブロックに作用すると、一度だけ実行します。

コードブロックは、それが原因の構成および優先機能に限り、オブジェクトが作成されるように実行され、オブジェクトは主に初期化動作のために使用されているオブジェクトに作用するように構成されています。

おすすめ

転載: www.cnblogs.com/mark5/p/11069644.html