Bagian di JLS dapat ditemukan: §12.4.2 .
Prosedur Inisialisasi Terperinci:
9. Selanjutnya, jalankan baik penginisialisasi variabel kelas dan penginisialisasi statis kelas, atau penginisialisasi bidang antarmuka, dalam urutan tekstual, seolah-olah mereka adalah satu blok, kecuali variabel kelas terakhir dan bidang antarmuka yang nilainya dikompilasi konstanta -time diinisialisasi terlebih dahulu
Jadi ketiga variabel statis tersebut akan diinisialisasi satu per satu dalam urutan tekstual.
Begitu
static A obj = new A();
//num1 = 1, num2 = 1;
static int num1;
//this is initilized first, see below.
static int num2=0;
//num1 = 1, num2 = 0;
Jika saya mengubah urutan menjadi:
static int num1;
static int num2=0;
static A obj = new A();
Hasilnya akan seperti itu 1,1
.
Perhatikan bahwa static int num1;
ini bukan penginisialisasi variabel karena ( §8.3.2 ):
Jika deklarator bidang berisi penginisialisasi variabel, maka deklarator tersebut memiliki semantik tugas (§15.26) ke variabel yang dideklarasikan, dan: Jika deklarator untuk variabel kelas (yaitu, bidang statis), maka penginisialisasi variabel adalah dievaluasi dan tugas dilakukan tepat satu kali, ketika kelas diinisialisasi
Dan variabel kelas ini diinisialisasi saat kelas dibuat. Ini terjadi pertama kali ( §4.12.5 ).
Setiap variabel dalam program harus memiliki nilai sebelum nilainya digunakan: Setiap variabel kelas, variabel instan, atau komponen array diinisialisasi dengan nilai default ketika dibuat (§15.9, §15.10): Untuk tipe byte, nilai default adalah nol, yaitu nilai (byte) 0. Untuk tipe short, nilai defaultnya adalah nol, yaitu nilai (short) 0. Untuk tipe int, nilai defaultnya adalah nol, yaitu 0. Untuk tipe long, nilai defaultnya adalah nol, yaitu 0L. Untuk tipe float, nilai defaultnya adalah nol positif, yaitu 0.0f. Untuk tipe double, nilai defaultnya adalah nol positif, yaitu 0.0d. Untuk tipe char, nilai defaultnya adalah karakter null, yaitu '\ u0000'. Untuk tipe boolean, nilai defaultnya salah. Untuk semua jenis referensi (§4.3), nilai defaultnya adalah null.