Dari Lihat Metode Variabel Statis Jawa :
- Ini adalah variabel yang dimiliki kelas dan bukan objek (instance)
- Variabel statis diinisialisasi hanya sekali, pada awal eksekusi. Variabel ini akan diinisialisasi terlebih dahulu, sebelum inisialisasi variabel instan apa pun
- Salinan tunggal untuk dibagikan oleh semua instance kelas
- Variabel statis dapat diakses secara langsung dengan nama kelas dan tidak memerlukan objek apa pun.
Variabel instans dan kelas (statis) secara otomatis diinisialisasi ke nilai default standar jika Anda gagal menginisialisasi mereka dengan sengaja. Meskipun variabel lokal tidak diinisialisasi secara otomatis, Anda tidak dapat mengkompilasi program yang gagal menginisialisasi variabel lokal atau menetapkan nilai ke variabel lokal tersebut sebelum digunakan.
Apa yang sebenarnya dilakukan oleh compiler adalah secara internal menghasilkan rutinitas inisialisasi kelas tunggal yang menggabungkan semua penginisialisasi variabel statis dan semua blok penginisialisasi statis dari kode, dalam urutan yang muncul di deklarasi kelas. Prosedur inisialisasi tunggal ini dijalankan secara otomatis, hanya satu kali, saat kelas pertama kali dimuat.
Dalam kasus kelas dalam , mereka tidak boleh memiliki bidang statis
Sebuah kelas batin adalah sebuah kelas bersarang yang tidak secara eksplisit maupun implisit dinyatakan static
.
...
Kelas-kelas dalam tidak boleh mendeklarasikan penginisialisasi statis (§8.7) atau antarmuka anggota ...
Kelas-kelas dalam tidak boleh mendeklarasikan anggota statis, kecuali mereka adalah variabel konstan ...
Lihat JLS 8.1.3 Kelas Dalam dan Mesin Virtual Penutup
final
bidang di Jawa dapat diinisialisasi secara terpisah dari tempat deklarasinya, namun ini tidak dapat diterapkan ke static final
bidang. Lihat contoh di bawah ini.
final class Demo
{
private final int x;
private static final int z;
static
{
z = 10;
}
public Demo(int x)
{
this.x=x;
}
}
Hal ini karena hanya ada satu salinan dari static
variabel yang terkait dengan jenis, bukan dari satu terkait dengan setiap contoh dari jenis seperti dengan variabel contoh dan jika kita mencoba untuk menginisialisasi z
jenis static final
dalam constructor, itu akan mencoba untuk reinitialize static final
bidang jenis z
karena konstruktor dijalankan pada setiap instance kelas yang tidak boleh terjadi pada final
bidang statis .