Bilakah Pembolehubah Statik Dimulakan di Java?

1. Pengenalan

Dalam tutorial ini, kita akan meneroka proses inisialisasi pemboleh ubah statik. Mesin Maya Java (JVM) mengikuti proses ini semasa memuatkan kelas.

2. Proses Permulaan

Pada tahap tinggi, JVM melakukan langkah-langkah berikut:

Pertama, kelas dimuat dan dihubungkan. Kemudian, fasa "inisialisasi" proses ini memproses inisialisasi pemboleh ubah statik. Akhirnya, kaedah utama yang berkaitan dengan kelas dipanggil.

Di bahagian seterusnya, kita akan melihat inisialisasi pemboleh ubah kelas.

3. Pembolehubah Kelas

Di Jawa, pemboleh ubah statik juga disebut pemboleh ubah kelas. Artinya, mereka tergolong dalam kelas dan bukan contoh tertentu. Hasilnya, inisialisasi kelas akan menginisialisasi pemboleh ubah statik.

Sebaliknya, contoh kelas akan menginisialisasi pemboleh ubah instance (pemboleh ubah bukan statik). Semua contoh kelas berkongsi pemboleh ubah statik kelas.

Mari kita ambil contoh StaticVariableDemo kelas :

public class StaticVariableDemo { public static int i; public static int j = 20; public StaticVariableDemo() {} }

Pertama, JVM membuat objek Kelas untuk kelas StaticVariableDemo . Seterusnya, pemula medan statik memberikan nilai lalai yang bermakna kepada medan statik. Dalam contoh kami di atas, pemboleh ubah kelas i pertama kali dimulakan dengan nilai lalai int sifar .

Urutan teks berlaku untuk bidang statik. Pertama, saya akan memulakan dan kemudian j akan dimulakan. Selepas itu , kelas dan ahli statiknya akan dapat dilihat oleh kelas lain.

4. Pemboleh ubah dalam Blok Statik

Mari ambil contoh lain:

public class StaticVariableDemo { public static int z; static { z = 30; } public StaticVariableDemo() {} }

Dalam kes ini, inisialisasi pemboleh ubah akan mengikut urutan. Sebagai contoh, JVM pada mulanya menetapkan pemboleh ubah z ke nilai int default 0. Kemudian, dalam blok statik , ia berubah menjadi 30.

5. Pembolehubah dalam Kelas Bersarang Statik

Akhirnya, mari kita ambil contoh kelas bersarang di dalam kelas StaticVariableDemo luar :

public class StaticVariableDemo { public StaticVariableDemo() {} static class Nested { public static String nestedClassStaticVariable = "test"; } }

Dalam kes ini, kelas StaticVariableDemo memuatkan kelas Nested . Ia akan memulakan pemboleh ubah statik nestedClassStaticVariable .

6. Kesimpulannya

Dalam artikel pendek ini, kami telah menerangkan secara ringkas inisialisasi pemboleh ubah statik. Untuk keterangan lebih lanjut, periksa Spesifikasi Bahasa Java.

Seperti biasa, potongan kod boleh didapati di GitHub.