Di Java, blok kode disebut blok kode, dan blok kode dapat dibagi menjadi empat jenis berikut:
1. Pendahuluan
1. Blok Kode Normal:
Metode Badan Metode di Kelas
2. Bangun blok kode :
Konstruktor dipanggil ketika objek dibuat, dan dipanggil setiap kali dibuat, diutamakan atas pelaksanaan konstruktor kelas.
3. Blok Kode Statis:
Cuplikan kode yang dibungkus dengan statis {} hanya akan dieksekusi sekali. Blok kode statis diutamakan daripada eksekusi blok konstruksi.
4. Sinkronisasi blok kode:
Menggunakan sinkronisasi () {} blok kode yang dibungkus, dalam lingkungan multi-utas, operasi baca dan tulis pada data bersama harus saling eksklusif, jika tidak, ia akan menyebabkan inkonsistensi data. Blok kode sinkron perlu ditulis dalam metode ini.
2. Persamaan dan perbedaan antara blok kode statis dan blok kode yang dibangun
Kesamaan: Semua JVM memuat kelas dan mengeksekusi sebelum konstruktor dieksekusi. Beberapa dapat didefinisikan di kelas. Secara umum, beberapa variabel statis ditetapkan di blok kode.
Perbedaan: Blok kode statis dijalankan sebelum blok kode non-statis. Blok kode statis dieksekusi hanya sekali pada yang baru dan tidak dieksekusi setelahnya. Sebaliknya, blok kode non-statis dieksekusi sekali setiap baru.
Tiga. Contoh
Blok Kode Biasa: {} yang muncul dalam metode atau pernyataan disebut blok kode normal. Urutan eksekusi blok kode biasa dan pernyataan umum ditentukan oleh urutan di mana mereka muncul dalam kode, pertama kali muncul pertama kali.
tes kelas publik {public static void main (string [] args) {{int x = 3; System.out.println ("Variabel x =" + x); } int x = 1; System.out.println ("Variabel x =" + x); {int y = 7; System.out.println ("Variabel y =" + y); }}} / * * Jalankan hasil variabel x = 3 di blok kode biasa * variabel x = 1 dalam metode utama * variabel y = 7 di blok kode biasa * / /Blok Kode Konstruk: Blok kode yang secara langsung didefinisikan di kelas dan tidak memiliki kata kunci statis disebut blok kode konstruk {}. Blok kode konstruktor dipanggil saat membuat objek, dan setiap kali objek dibuat, itu dipanggil, dan urutan eksekusi blok kode konstruktor lebih diutamakan daripada konstruktor kelas. Jika ada beberapa blok kode yang dibangun, urutan eksekusi ditentukan oleh urutan di mana mereka muncul dalam kode, pertama kali muncul eksekusi pertama.
public class Test1 {{System.out.println("first building block");}public Test1(int i) {System.out.println("th" + i + "sub-call" + "constructor");}{System.out.println("second building block");}public static void main(String[] args) {new Test1(0);new Test1(1);new Test1 (2);}}/** Hasil eksekusi blok bangunan pertama* blok bangunan kedua* Konstruktor panggilan 0* Blok bangunan pertama* Blok bangunan kedua* Blok bangunan pertama* Blok bangunan pertama* Blok Bangunan Pertama* Blok Bangunan Kedua* Panggilan kedua untuk membangun metode*//Blok Kode Statis: Blok kode yang dideklarasikan menggunakan kata kunci statis di java. Blok statis digunakan untuk menginisialisasi kelas dan menginisialisasi atribut kelas. Setiap blok kode statis hanya akan dieksekusi sekali. Karena JVM menjalankan blok kode statis saat memuat kelas, blok kode statis dijalankan sebelum metode utama.
Jika kelas berisi beberapa blok kode statis, itu akan dieksekusi terlebih dahulu, maka kode yang ditentukan akan dieksekusi nanti.
Melihat:
1. Blok kode statis tidak dapat ada di badan metode apa pun.
2. Blok kode statis tidak dapat secara langsung mengakses variabel instan dan metode instan, dan perlu diakses melalui objek instan kelas.
tes kelas publik3 {public static string static_field = "statis atribute"; // static block static {System.out.println (static_field); System.out.println ("Static Code Block 1");} public String field = "non-static attribute"; // non-static block {out.out.println (non-statln (non-static. "non-static block {out.out.println (non-stat field (" non-static.printl (non-statln (non non-non non-stat. 2 ");} public initoderTest () {System.out.println (" No Parameter Constructor ");} public static void main (string [] args) {initodertest test = new initoderTest ();} // non-static block {System.println (field); System.out.printl non-static {System.out.println (field); System.out.Out.Printlin {System.out.println (static_field); System.out.println ("Blok kode statis 2");}}/** Jalankan Hasil Atribut Statis* Blok Kode Statis 1* Atribut Statis* Blok Kode Statis 2* Non-Statis Atribut* Non-Statis Blok 2* Atribut Non-Statis* Non-Statis Blok Non-Statis 1* Non-Urgument*Kode berikut menunjukkan hubungan prioritas antara blok kode individual untuk membuat objek dan memanggil metode:
Public Class Person {static {System.out.println ("1. Saya adalah blok statis, yang lebih diutamakan daripada eksekusi blok konstruksi! Dan itu hanya dieksekusi sekali ketika objek pertama dibuat!");} {System.out.println ("2. Saya adalah konstruktor, yang melahirkan di atas metode konstruksi! function1 () {System.out.println ("Saya adalah blok kode normal dalam metode non-statis, yang diutamakan ketika metode ini dipanggil!");} public static void function2 () {System.out.println ("Saya adalah blok kode normal dalam metode statis. Metode dieksekusi lebih lambat dari blok statis!");Kelas Tes:
kelas publik HelloWrold {public static void main (string [] args) {new orang (). function1 (); baru Orang (). Function1 (); System.out.println ("======================================================================================================== ================================================================= ================================================================= ================================================================ ================================================================= ================================================================= =================================================================Hasil Menjalankan:
Kita dapat melihat bahwa blok statis selalu dieksekusi terlebih dahulu, dan hanya akan dieksekusi sekali ketika contoh pertama dari kelas dibuat; Yang kedua adalah blok konstruktor; dan yang ketiga adalah metode konstruktor.
Meringkaskan
Di atas adalah semua tentang penjelasan terperinci dari empat blok kode di Java, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!