Javaでは、コードブロックはコードブロックと呼ばれ、コードブロックは次の4つのタイプに分割できます。
1。はじめに
1。通常のコードブロック:
クラスのメソッドメソッドボディ
2。コードブロックを作成します。
コンストラクターは、オブジェクトが作成されたときに呼び出され、クラスコンストラクターの実行よりも優先され、作成されるたびに呼び出されます。
3。静的コードブロック:
static {}にラップされたコードスニペットは、1回のみ実行されます。静的コードブロックは、建設ブロックの実行よりも優先されます。
4。コードブロックを同期します。
synchronized(){} {}コードブロックを使用して、マルチスレッド環境では、共有データの読み取り操作が相互に排他的である必要があります。そうしないと、データの矛盾につながります。同期コードブロックは、メソッドに記述する必要があります。
2。静的コードブロックと構築されたコードブロックの類似点と相違点
類似点:すべてのJVMはクラスをロードし、コンストラクターが実行される前に実行します。複数はクラスで定義できます。一般に、いくつかの静的変数はコードブロックに割り当てられます。
違い:静的コードブロックは、非静的なコードブロックの前に実行されます。静的コードブロックは、最初の新規で1回だけ実行され、その後実行されません。代わりに、非静的なコードブロックは、新品ごとに1回実行されます。
三つ。例
通常のコードブロック:メソッドまたはステートメントに表示される{}は、通常のコードブロックと呼ばれます。通常のコードブロックと一般的なステートメントの実行順序は、コードに表示される順序によって決定され、最初に表示されます。
public class test {public static void main(string [] args){{int x = 3; system.out.println( "変数x =" + x); } int x = 1; system.out.println( "変数x =" + x); {int y = 7; system.out.println( "変数y =" + y); }}} / * *結果変数x = 3通常のコードブロックで3を実行 *メインメソッドの変数x = 1 *通常のコードブロックの変数y = 7 * /コードブロックの構築:クラスで直接定義され、静的キーワードがないコードブロックは、{}コンストラクトコードブロックと呼ばれます。オブジェクトを作成するときにコンストラクターコードブロックが呼び出され、オブジェクトが作成されるたびに呼び出され、コンストラクターコードブロックの実行順序がクラスコンストラクターよりも優先されます。複数の構築されたコードブロックがある場合、実行順序はコードに表示される順序によって決定されます。最初に最初の実行が表示されます。
public class test1 {{system.out.println( "First Building block");} public test1(int i){system.out.println( "th" + i + "sub-call" + "constructor");} {system.out.println( "2番目のビルディングブロック"); test1(2);}}/**実行結果ファーストビルディングブロック*セカンドビルディングブロック* 0番目のコールコンストラクター*最初のビルディングブロック*最初のビルディングブロック*ファーストビルディングブロック*第2ビルディングブロック静的コードブロック:Javaの静的キーワードを使用して宣言されたコードブロック。静的ブロックは、クラスを初期化し、クラスの属性を初期化するために使用されます。各静的コードブロックは1回だけ実行されます。 JVMはクラスのロード時に静的コードブロックを実行するため、静的コードブロックはメインメソッドの前に実行されます。
クラスに複数の静的コードブロックが含まれている場合、最初に実行されます。次に、定義されたコードが後で実行されます。
知らせ:
1.静的コードブロックは、どのメソッド本体にも存在できません。
2.静的コードブロックは、インスタンス変数とインスタンスメソッドに直接アクセスできず、クラスのインスタンスオブジェクトを介してアクセスする必要があります。
public class test3 {public static string static_field = "static属性"; // static block static {system.out.println(static_field); out.println( "static code block 1");} public string field = "non-static属性"; // non-static block {system.out.out.out.out.ut.println( " 2 ");} public initodertest(){system.out.println(" no parameter constructor ");} public static void main(string [] args){initodertest test = new initodertest();} {system.out.println(static_field); system.out.println( "static code block 2");}}/** run static属性*静的コードブロック*静的属性*静的コードブロック2*非統計属性*非静的コードブロック2*非統計属性*非統計属性*次のコードは、オブジェクトを作成することとメソッドを呼び出すという個々のコードブロック間の優先関係を示しています。
public class person {static {system.out.println( "1。構造ブロックの実行よりも優先される静的ブロックです!そして、最初のオブジェクトが作成されたときに1回だけ実行されます!} {2。2。私はコンストラクターです。 function1(){system.out.println( "私は非静的な方法では通常のコードブロックです。これは、メソッドが呼び出されたときに優先される場合は優先されます。} public static void function2(){system.out.println("私は静的メソッドの通常のコードブロックです。テストクラス:
public class hellowrold {public static void main(string [] args){new Person()。function1(); new person()。function1(); system.out.println( "=========================================================================== =============================================================================== =============================================================================== =============================================================================== =============================================================================== =============================================================================== ===============================================================================実行結果:
静的ブロックは常に最初に実行され、クラスの最初のインスタンスが作成されたときにのみ実行されることがわかります。 2つ目はコンストラクターブロックです。 3つ目はコンストラクターメソッドです。
要約します
上記は、Javaの4つのコードブロックの詳細な説明に関するものであり、すべての人に役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!