Kapan Variabel Statis Diinisialisasi di Java?

1. Perkenalan

Dalam tutorial ini, kita akan menjelajahi proses inisialisasi variabel statis. Java Virtual Machine (JVM) mengikuti proses ini selama pemuatan kelas.

2. Proses Inisialisasi

Pada level tinggi, JVM melakukan langkah-langkah berikut:

Pertama, kelas dimuat dan ditautkan. Kemudian, fase "menginisialisasi" dari proses ini memproses inisialisasi variabel statis. Akhirnya, metode utama yang terkait dengan kelas disebut.

Di bagian selanjutnya, kita akan melihat inisialisasi variabel kelas.

3. Variabel Kelas

Di Java, variabel statis juga disebut variabel kelas. Artinya, mereka termasuk dalam kelas dan bukan contoh tertentu. Hasilnya, inisialisasi kelas akan menginisialisasi variabel statis.

Sebaliknya, instance kelas akan menginisialisasi variabel instance (variabel non-statis). Semua instance kelas berbagi variabel statis kelas.

Mari kita ambil contoh kelas StaticVariableDemo :

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

Pertama, JVM membuat objek Kelas untuk kelas StaticVariableDemo . Selanjutnya, penginisialisasi bidang statis menetapkan nilai default yang berarti ke bidang statis. Dalam contoh kita di atas, variabel kelas i pertama kali diinisialisasi dengan nilai default int nol .

Urutan tekstual berlaku untuk bidang statis. Pertama, saya akan menginisialisasi dan kemudian j akan diinisialisasi. Setelah itu , kelas dan anggota statisnya akan terlihat oleh kelas lain.

4. Variabel dalam Blok Statis

Mari kita ambil contoh lain:

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

Dalam hal ini, inisialisasi variabel akan berurutan. Misalnya, JVM awalnya menetapkan variabel z ke nilai int default 0. Kemudian, di blok statis , diubah menjadi 30.

5. Variabel dalam Kelas Bersarang Statis

Terakhir, mari kita ambil contoh kelas bertingkat di dalam kelas luar StaticVariableDemo :

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

Dalam kasus ini, kelas StaticVariableDemo memuat kelas Nested . Ini akan menginisialisasi variabel statis nestedClassStaticVariable .

6. Kesimpulan

Dalam artikel singkat ini, kami telah menjelaskan secara singkat inisialisasi variabel statis. Untuk detail lebih lanjut, periksa Spesifikasi Bahasa Java.

Seperti biasa, potongan kode tersedia di GitHub.